python - Apple Python 启动器作用于命令键绑定(bind)

标签 python macos tkinter

我编写了一个使用 tkinter 的 Python 实用程序。我在 Macintosh 上运行它。当它被执行时,它在苹果提供的Python启动程序(/Library/Frameworks/Python.framework/Versions/3.2/Resources/Python.app)中运行。

我的代码安装了自己的菜单,并且我绑定(bind)到编辑菜单(Command-x、command-c、command-x、command-a、command-z)和退出(command)的常用 Macintosh 命令键等效项-q)。我的问题是 Python 启动程序正在响应命令键绑定(bind)。这对于粘贴之类的事情来说很不方便,因为它需要完成两次。退出是一个真正的问题,因为启动程序在我保存更改的文件之前杀死了我的程序。

有什么方法可以阻止 Python 启动程序对等效命令键执行操作吗?我尝试了这个:“rootWindow.unbind ('<Command-Key-q>')”,但没有成功。在我的代码清理之前启动程序就退出了。

我在 OS X 10.6.6 上使用 CPython 3.2。

最佳答案

不要覆盖 Tkinter 的默认键绑定(bind),请考虑 re-mapping Tcl's "exit" command到自定义函数。 (每次点击 command-q 或使用“退出”菜单项时都会调用此函数。)

def save_and_exit():
    save_changed_files()
    sys.exit()

self.createcommand('exit', save_and_exit)

除此之外,我建议删除您的复制/粘贴自定义按键绑定(bind),并让库为您完成这项工作。如果您仍然一心想要覆盖默认设置,Effbot 在 Tkinter events and bindings 上有一个很好的教程。 .

关于python - Apple Python 启动器作用于命令键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372869/

相关文章:

python - Tkinter,并排显示两个图像

python - 如何使用 python 变量运行多个 Linux 命令

python - 如何在 Tkinter 中定位按钮?

python - 如何设置字典值使其表现得像实例属性?

objective-c - 防止 window 两次打开...

macos - osx上的Gradle Docker插件中断管道

swift - 游戏套件 : NPC element is going to very high floating number coordinates and back on update

python - tkinter按钮限制命令不重复

python - 将可迭代列表传递给 itertools 函数

python - 请解释 *elements,=iterable 结构