Change title of Tkinter application in OS X Menu Bar

前端 未结 2 536
日久生厌
日久生厌 2020-12-30 07:18

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 a

相关标签:
2条回答
  • 2020-12-30 07:35

    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>
    
    0 讨论(0)
  • 2020-12-30 07:47

    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()
    
    0 讨论(0)
提交回复
热议问题