编辑:我指的是 OSX 应用程序菜单,其中包含关于和首选项菜单项(以及其他菜单项)。
对于知道正确搜索术语的人来说,这可能是另一个简单的方法,但是在花费数小时在 IDLE 中跟踪代码并搜索网络之后,我还不能完全将这些点联系起来。
我正在尝试用 Python 替换标准的关于菜单。 IDLE 至少部分地做到了这一点;该菜单仍命名为“关于 Python”,但它显示 IDLE 关于窗口。当从 Wing IDE(在 X11 下)运行时,idle 不显示其关于窗口,并且由于某种原因 IDLE 不想调试 idle.py...
我已经能够用“About MyProgramName”替换“About Python”,但我要么得到通常的“tk About”窗口,要么根本没有关于窗口。 IDLE 定义了一个虚拟事件以将控制权传递给它的“关于”窗口,而我一直在研究如何定义一个连接到菜单选择的虚拟事件。
所以,我有 root.bind('<<about-myprogram>>', about_dialog)
,但我该如何连接呢? tk.add_event() 需要一个序列...
有什么建议吗?
最佳答案
如果您正在谈论构建一个菜单栏,该菜单栏在菜单上有一个帮助条目,并且在帮助菜单上有一个关于条目,那是非常基本的东西,周围有很好的例子。
其中任何一个都会清楚地解释如何为您的应用创建顶级菜单。如果您在谈论其他事情,请澄清。
我搜索了 ::tk::mac::ShowPreference
在我的 C:\Python27 目录下的源代码中,并运行了文件 C:\Python27\Lib\idlelib\macosxSupport.py 中的代码,看起来它正在做你想做的事情(或者至少足够接近你可以适应它)。
def config_dialog(event=None):
from idlelib import configDialog
root.instance_dict = flist.inversedict
configDialog.ConfigDialog(root, 'Settings')
root.createcommand('::tk::mac::ShowPreferences', config_dialog)
我无法找到有关 createcommand() 方法的任何好的文档,但我确实确认它存在于 root
上我从 root = Tk()
创建的小部件.在寻找更多信息时,我也遇到了这个 little discussion关于这个问题。
关于python - 如何在 OSX 上用 Python 替换 "About Tkinter"菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10441279/