我编写了一个使用 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/