- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 python 3 和 tkinter 创建一个文本编辑器。文本编辑器工作得很好,除了当我尝试使用键盘快捷键时。每当我使用任何快捷方式时,都会收到一条错误消息:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
return self.func(*args)
TypeError: newFile() takes 0 positional arguments but 1 was given
newFile()
可以替换为 copySelected()
、selectAll()
或我尝试使用的任何命令。仅当我尝试使用键绑定(bind)时才会发生这种情况。它在菜单栏中工作得很好。奇怪的是,当我剪切、复制或粘贴时,我收到了它们在应用程序中实际工作的错误。下面是按键绑定(bind)代码:
textField.bind("<Command-n>", newFile)
textField.bind("<Command-N>", newFile)
textField.bind("<Command-o>", openFile)
textField.bind("<Command-O>", openFile)
textField.bind("<Command-s>", saveFile)
textField.bind("<Command-S>", saveFile)
textField.bind("<Command-n>", newFile)
textField.bind("<Command-n>", newFile)
textField.bind("<Command-z>", undo)
textField.bind("<Command-Z>", undo)
textField.bind("<Command-Shift-z>", redo)
textField.bind("<Command-Shift-Z>", redo)
textField.bind("<Command-x>", cutSelected)
textField.bind("<Command-X>", cutSelected)
textField.bind("<Command-c>", copySelected)
textField.bind("<Command-C>", copySelected)
textField.bind("<Command-v>", paste)
textField.bind("<Command-V>", paste)
textField.bind("<Command-a>", selectAll)
textField.bind("<Command-A>", selectAll)
我目前正在 Mac 操作系统上测试代码,但我已经使代码特定于操作系统,以便它也可以在 Windows 和 Linux 上运行。 Windows 和 Linux 的代码除了 Command 被 Control 替换之外完全一样。该错误发生在所有三个平台上。
非常感谢任何帮助。谢谢!
最佳答案
当您将一个键绑定(bind)到该函数时,tkinter 会自动将一个对象传递给回调。该对象表示导致调用回调的事件。它包含诸如接收事件的小部件、鼠标的 x 和 y 坐标以及事件特有的其他详细信息(鼠标按钮、键盘字符等)等信息。
当您将函数绑定(bind)到事件时,您的函数必须能够接受此参数。例如:
def newFile(event):
...
请注意,这与通过小部件的 command
属性调用该函数不同。在这种情况下,不会传递任何 event
对象。如果您希望能够通过绑定(bind)和 command
属性调用该函数,那么您可以将该参数设置为可选(并确保您的函数实际上不会尝试使用它,因为它可能不存在):
def newFile(event=None):
...
关于linux - 键盘快捷键在 tkinter 中给我错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53032521/
如何检测在 WPF 中按下了 Ctrl + O 等快捷键(独立于任何特定控件)? 我 try catch KeyDown但KeyEventArgs不会告诉我 Control 或 Alt 是否已关闭。
我想给 JMenuItem 添加一个热键。我学会了如何添加看起来像 CTRL+SOME_KEY 的键。但我需要的是三重热键。类似 CTRL+ALT+W 的东西。我想给 JMenuItem 添加一个热键
我被要求制作一个日文版的桌面应用程序,将来可能会是中文版。所有字符串都保存在资源文件中,其中一些包含用于显示访问/快捷键的下划线,例如“_Save”或“Save _As ...”。当按下 Alt 键时
命令 我们在前面HelloWord章节中已经提到了命令写法,这里再重温一下。 context.subscriptions.push(vscode.commands.registerComma
我目前正在 MSDN 中游泳(淹没),寻找此问题的答案: 像 OneNote 一样,我希望我的通用 Windows 应用程序能够监听快捷方式。然后运行一些东西,并显示结果。 所以我发现了这个关于 La
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我对 Qt 完全陌生。 如何在 Mac 上用代码定义 Cmd + 数字键 键序列? 对于 Windows,我有 QKeySequence(QString("Ctrl+") + QString::num
我为javascript函数制作了一个快捷键。我设置了 S 键来启动此功能,因此设置了 Z 键来清除间隔功能,但我对此感到厌倦,当按 Z 键时,间隔不会停止:( var isCtrl = false;
问题: 我有一个 WebBrowser 并公开了它的 ActiveX 方法。在我的 WebBrowser 所在的表单中,我有一个带有快捷方式的 MainMenuStrip。只有当我在我的表单上的文本框
我正在尝试实现编辑器的快捷方式,但到目前为止还没有取得任何成功。 我想覆盖一些默认的 QScintilla 快捷键。我读过这篇answer ,但我不确定这是否有助于解决我的问题。 我还阅读了 Scin
基本配置(萌新看,大佬请跳到下一节) 1、创建项目 点击Create New Project创建新的项目,点击Open打开已有的项目。 先选择左侧的项目类型,在右边选择项目的所在目录,强烈
当我想用快捷键 ctrl + / 注释或注释掉我的代码时,IntelliJ 将 // 放在第一列而不是电流。当前如何发表评论? 例子 System.out.println(set.co
我经常更改编辑器的字体大小。那么有没有人知道快捷键?到目前为止,我必须通过几次点击来使用菜单:首选项 -> 颜色和字体 -> 基本 -> 文本字体。可以使用 CTRL + MouseWheel 会很好
如何将 Xcode 4 快捷键重置为默认值? Xcode -> 性能 -> 键绑定(bind) 我发现我设置了错误,但找不到重置为原始的方法。 我该怎么办?重新安装 Xcode 4? 最佳答案 只需单
我试图从 TEdit 的 OnKeyPress 事件中检测 Ctrl+V,并且我已经请注意,当按 Ctrl+AnyKey 时,Key 参数会采用不寻常的值。 示例: procedure TForm1.
我定义了这些 requireJs 选项: require.config({ baseUrl: '/js/', paths: { jquery: '/components
最近,FoxitReader for Linux 正式推出,我很喜欢。 http://www.webupd8.org/2015/09/foxit-pdf-reader-sees-new-linux-r
如果您通过查找或 Shift + Cmd + O 在 Appcode 中打开文件,您看不到该文件在项目中的哪个文件夹中。在项目资源管理器中,左侧顶部栏上有一个按钮,如果您将鼠标悬停在它上面,它会显示文
Eclipse 中是否有快捷键可以用其 unicode 转义序列 (\uXXXX) 替换特殊字符(重音)? 最佳答案 作为替代方法,您可以使用 Java 编辑器模板(请参阅 Eclipse Prefe
在 Visual Studio 中,当您在按钮等文本中的字母前使用“&”来获取带下划线的字母快捷方式时,ALT + that letter 执行按钮等。 我想知道如何在 Java 中做到这一点。我知道
我是一名优秀的程序员,十分优秀!