Quando si crea un'applicazione con una GUI utilizzando Tkinter in Python, il nome dell'applicazione appare come "Python" nella barra dei menu su OS X. Come si può ottenere apparire come qualcos'altro?Modificare il titolo dell'applicazione Tkinter in OS X Barra dei menu
risposta
La mia risposta è basata su uno sepolto nel mezzo di some forums. È stato un po 'difficile trovare questa soluzione, ma mi è piaciuto perché ti permette di distribuire la tua applicazione come un singolo script multipiattaforma. Non è necessario eseguirlo tramite py2app o qualcosa di simile, che ti lascerebbe un pacchetto specifico per OS X.
In ogni caso, sto condividendo la mia versione ripulita qui per dargli un po 'più di attenzione, quindi stava arrivando. Dovrai installare pyobjc
tramite pip
per ottenere il modulo Foundation
utilizzato nel codice.
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>
ma questo richiede un altro terzo biblioteca di partito. Non c'è modo di farlo all'interno di Tk? – Zizouz212
@ Zizouz212: Ho uno script che installa automaticamente 'pip' e lo usa per installare framework aggiuntivi in fase di runtime. Si tratta di un singolo tentativo per l'utente quando eseguono l'applicazione la prima volta (supponendo che abbiano una connessione Internet). Quindi considero le librerie di terze parti un costo molto basso. Ma se ti piacerebbe farne a meno, immagino che tu possa guardare al sorgente di 'NSBundle' e prendere solo ciò che ti serve da esso e inserirlo direttamente nel tuo codice. – ArtOfWarfare
Ho provato ad installare 'pyobjc' sull'ultimo MBP15 - ci sono voluti circa mezz'ora. Non un'opzione. – Andrei
non possono essere del tutto quello che ti serve, ma mi sorprende che nessuno ha menzionato la piattaforma modo semplice indipendente (funziona con Python 3.x su Win 7):
from tkinter import Tk
root = Tk()
root.title("Your title here") # or root.wm_title
e se si vogliono cambiare l'icona:
''' 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()
Ho chiesto specificamente su OS X (e voglio una risposta che funzioni su 2.7, anche se questo probabilmente non fa la differenza). Avete effettivamente provato questo su OS X e visto che funziona? Devo supporre che l'ho provato prima di chiedere un anno fa ... In realtà non ho un computer con OS X davanti a me per testarlo adesso. Approfondirò questo più tardi quando avrò la possibilità di provare su un Mac ... – ArtOfWarfare
prova questo codice su OSX con Pyton 2.x da Tkinter import * root = Tk() root.title ("Il tuo titolo qui ") w = Etichetta (root, text =" Ciao, mondo! ") w.pack() root.mainloop() – user1459519
Ripubblicato a causa dello stupido limite di 5 minuti per la modifica dei commenti. Per python 2.x utilizzare "da Tkinter" anziché "da tkinter" (per 3.x). Tkinter/tkinter è progettato per essere compatibile con più piattaforme su almeno Linux, Win e Mac. Prova questo codice su OS X con Python 2.x - è leggermente modificato da [link] (http://effbot.org/tkinterbook/tkinter-hello-tkinter.htm): root = Tk() root.title ("Il tuo titolo qui") w = Label (root, text = "Ciao, mondo") w.pack() radice.mainloop() – user1459519
correlati http://stackoverflow.com/questions/8695926/remove-default-python-submenu-with-tkinter-menu-on-mac-osx – Andrei