py2app plist 应用信息在“关于”中不显示

0 投票
2 回答
665 浏览
提问于 2025-04-17 21:27

我正在用py2app创建一个应用程序,一切都运行得很好,除了我无法在菜单的“关于”部分显示我指定的plist中的信息。当我右键点击并选择“获取信息”时,信息是可以显示的,但在应用程序内部却不行。当我点击“关于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'],
)

2 个回答

0

非常感谢你提供的这个精彩回答。我注意到你在代码中添加了一些额外的菜单栏选项,不仅仅是“关于”面板。如果你只想提供一个自定义的“关于”面板,这里有一个简化版的 Python 3 代码。

from tkinter import *

def about_dialog():
    root.tk.call('tk::mac::standardAboutPanel')

root = Tk()
root.createcommand('tkAboutDialog', about_dialog)
root.mainloop()
3

看起来你在你的Python应用中使用了Tkinter。OS X上的Cocoa基础的Aqua Tk会创建一些基本的菜单选项,并且默认会有一个关于的菜单项。虽然在Tk中对此的文档不是特别详细,但其实可以通过重写默认的Tk tkAboutDialog命令来覆盖这个默认的Cocoa 关于菜单。下面是一个非常简单的例子,使用了内置的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()

更多信息可以在这里找到。

撰写回答