我正在尝试使用py2app创建一个应用程序,一切正常,但我无法从指定的plist中获取信息,以便在我从菜单中选择About部分时显示。当我右键单击并选择获取信息时,信息会显示,但不会显示在应用内。当我点击关于TextTools(我的应用程序的名称)时,我显示了Tcl / Tk的信息。
这是我得到的:
这是我的setup.py文件:
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['TextTools.py']
DATA_FILES = ['TextAnalysis.py', 'CustomText.py', 'ResultTree.py']
OPTIONS = {'argv_emulation': True,
'iconfile': '/Users/howe1rp/Desktop/TT_local/TextTools_local/TextTools/man.icns',
'plist': {
'CFBundleName': 'TextTools',
'CFBundleShortVersionString':'0.0.1',
'CFBundleVersion': '0.0.1',
'CFBundleIdentifier':'com.rh.TextTools',
'NSHumanReadableCopyright': '@ My Name 2014'}}
setup(
app=APP,
data_files=DATA_FILES,
py_modules=['TextAnalysis', 'CustomText', 'ResultTree'],
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
答案 0 :(得分:3)
看起来你在Python应用程序中使用Tkinter。 OS X上基于Cocoa的Aqua Tk创建基本菜单选项,并包含默认的About
菜单项。在Tk中没有很好地记录它,但是可以通过覆盖默认的Tk About
命令来覆盖默认的Cocoa tkAboutDialog
。这是一个非常简单的示例,它使用内置的Aqua Tk standardAboutPanel
。
try:
from tkinter import * # Python 3
except ImportError:
from Tkinter import * # Python 2
def new_file():
# ...
pass
def about_dialog():
root.tk.call('tk::mac::standardAboutPanel')
root = Tk()
win = Toplevel(root)
menubar = Menu(win)
menu_file = Menu(menubar)
# ...
menubar.add_cascade(menu=menu_file, label='File')
# ...
menu_file.add_command(label='New', command=new_file)
# ...
root.createcommand('tkAboutDialog', about_dialog)
win['menu'] = menubar
root.mainloop()
还有更多信息here。
答案 1 :(得分:0)
非常感谢这个伟大的答案。我已经看到你在代码中添加了一些额外的菜单栏条目,而不仅仅是“关于”面板。如果你想要的只是提供一个自定义的“关于”面板,这里是剥离的Python 3版本。
from tkinter import *
def about_dialog():
root.tk.call('tk::mac::standardAboutPanel')
root = Tk()
root.createcommand('tkAboutDialog', about_dialog)
root.mainloop()