Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apple Python launcher正在对命令键绑定进行操作_Python_Macos_Tkinter - Fatal编程技术网

Apple Python launcher正在对命令键绑定进行操作

Apple Python launcher正在对命令键绑定进行操作,python,macos,tkinter,Python,Macos,Tkinter,我已经编写了一个使用tkinter的Python实用程序。我在Macintosh上运行它。执行时,它在苹果提供的Python启动程序(/Library/Frameworks/Python.framework/Versions/3.2/Resources/Python.app)中运行 我的代码安装自己的菜单,我绑定到常用的Macintosh命令键,用于编辑菜单(command-x、command-c、command-x、command-a、command-z)和退出(command-q)。我的问题

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

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

是否有某种方法可以阻止Python启动程序对命令键等效项执行操作?我尝试这样做:“
rootWindow.unbind(“”)
”,但没有效果。启动程序在我的代码清理之前退出


我在OS X 10.6.6上使用的是CPython 3.2。

您使用Python.app启动的具体原因是什么?这个.app很可能是快捷方式行为不端的原因

如果我理解正确的话,这个启动器只是带有特殊导入的默认python(/usr/bin/python)的包装器

如果从终端运行(-v是此处的键):

您将在开始时看到它导入了什么。将这些行添加到主文件应使命令行启动与.app相同

还要注意,python.app在5.1.1版中

比尔


Juha

代替重写TKimter的默认键绑定,考虑到自定义函数。(每次单击command-q或使用“退出”菜单项时,都会调用此命令。)


除此之外,我建议删除您的复制/粘贴自定义键绑定,让库为您完成这项工作。如果你仍然执意要覆盖默认设置,Effbot有一个很好的教程。

首先,苹果没有提供
/Library/Frameworks/Python.framework/Versions/3.2/Resources/Python.app
。您很可能是使用某个第三方分发服务器安装了Python3.2,或者可能是从源代码构建了框架版本。在任何情况下,
Python.app
都是包含在每个框架版本中的虚拟应用程序包。它的目的是确保当您调用python时,即使是从命令行调用python,OSX也会将其视为一个成熟的GUI应用程序。这在使用
tkinter
时尤为重要。您看到的默认菜单和键绑定由
Tcl/Tk
提供,而不是
tkinter
。正如您所发现的,更改这些菜单的正确方法是重新映射默认菜单。请注意,目前Mac OS X上至少有三种主要的
Tk
变体可用:Aqua-Carbon-Tk、Aqua-Cocoa-Tk和X11-Tk。有一些重要的细节,特别是关于Mac OS X 10.6的。

谢谢你,科迪。这是广告宣传的。顺便说一下,Tck/TkAqua常见问题解答现在位于。让我澄清一下。Tck/TkAqua常见问题解答在喜欢的讨论中被引用,现在位于。真棒!祝你的应用程序好运。你介意投赞成票和/或接受我的回答吗?我正在努力收集足够的声誉来投票支持我认为有用的其他答案。嘿,朱哈。对我来说,启动器是如何参与进来的有点神秘,但当我用tkinter打开一个窗口时,它会自动发生。查看导入的模块列表似乎并没有阐明启动器/包装程序是如何参与进来的。我找不到它的任何文档。然而,我确实同意,它是抢夺我指挥权关键事件的罪魁祸首。我不确定5.1.1版。你是说3.1.1?嘿,奈德。谢谢你周到的回答。我认为shell程序不是来自苹果的。
/Library/Frameworks/Python.framework/Versions/5.1.1/Resources/Python.app/Contents/MacOS/Python -v
def save_and_exit():
    save_changed_files()
    sys.exit()

self.createcommand('exit', save_and_exit)