Change title of Tkinter application in OS X Menu Bar

半腔热情 提交于 2019-12-18 12:27:06

问题


When you create an application with a GUI using Tkinter in Python, the name of your application appears as "Python" in the menu bar on OS X. How can you get it to appear as something else?


回答1:


My answer is based on one buried in the middle of some forums. It was a bit difficult to find that solution, but I liked it because it allows you to distribute your application as a single cross platform script. There's no need to run it through py2app or anything similar, which would then leave you with an OS X specific package.

Anyways, I'm sharing my cleaned up version here to give it a bit more attention then it was getting there. You'll need to install pyobjc via pip to get the Foundation module used in the code.

from sys import platform

# Check if we're on OS X, first.
if platform == 'darwin':
    from Foundation import NSBundle
    bundle = NSBundle.mainBundle()
    if bundle:
        info = bundle.localizedInfoDictionary() or bundle.infoDictionary()
        if info and info['CFBundleName'] == 'Python':
            info['CFBundleName'] = <Your application name here>



回答2:


May not be quite what you need but I am surprised no one has mentioned the simple, platform independent way (works with Python 3.x on Win 7) :

from tkinter import Tk

root = Tk()
root.title( "Your title here" )  # or root.wm_title

and if you want to change the icon:

''' Replace the default "Tk" icon with an Application-specific icon '''
''' (that is located in the same folder as the python source code). '''

import sys
from tkinter import PhotoImage 

program_directory = sys.path[ 0 ]

IconFile = os.path.join( program_directory ) + "\ApplicationIcon.gif" 
IconImage = PhotoImage( file = IconFile ) 

root.tk.call( 'wm', 'iconphoto', root._w, IconImage )

root.mainloop()


来源:https://stackoverflow.com/questions/30009909/change-title-of-tkinter-application-in-os-x-menu-bar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!