Nascondi la console per l'app Tkinter su OSX
Domanda
Sto cercando di nascondere il Terminale quando avvio un'app basata su Tkinter GUI, ma quando faccio doppio clic sul file app.py su OSX, viene visualizzata la finestra Terminale. Ho provato a cambiare l'estensione in .pyw e ho provato ad avviarlo con / usr / bin / pythonw, ma non importa quale sia, la finestra Terminale appare ancora.
Ho anche provato ad aggiungere il try / tranne di seguito, ma quando lo eseguo viene visualizzato l'errore: 'nome comando non valido " console "' nella finestra Terminale che appare.
from Tkinter import *
class MainWindow(Tk):
def __init__(self):
Tk.__init__(self)
try:
self.tk.call('console', 'hide')
except TclError, err:
print err
win = MainWindow()
win.mainloop()
Non sono stato in grado di trovare alcun modo per nascondere la finestra del Terminale. Qualcuno ha qualche idea?
Soluzione
Facendo doppio clic su un file .py
su OS X, è probabile che tu stia lanciando un'istanza gui Python tramite Python Launcher.app
fornito con OS X Pythons. Puoi verificarlo selezionando il file .py
nel Finder e facendo un Ottieni informazioni
su di esso. Python Launcher è un'app molto semplice che avvia Python tramite un comando Terminal.app. Per avviare direttamente la tua app Python GUI, l'approccio preferito è quello di creare un'app semplice usando py2app . C'è un breve tutorial qui .
EDIT:
Ci sono altri modi, ovviamente, ma molto probabilmente qualcuno di loro aggiungerebbe più livelli di indiretta. Per rendere un normale lavabile, "doppio clic" applicazione, è necessaria una sorta di struttura dell'app. Questo è ciò che py2app
ti consente di creare direttamente.
Un'alternativa molto semplice è sfruttare la capacità di AppleScript Editor di creare un'app di avvio. Nell'editor AppleScript
:
-
/ Applicazioni / Utility / AppleScript Editor.app
in OS X 10.6 -
/ Applicazioni / AppleScript / Script Editor.app
in 10.5
crea un nuovo script simile a questo:
do shell script "/path/to/python /path/to/script.py &> /dev/null &"
e poi Salva con nome ..
con Formato file - > Application
. Quindi avrai un'app con doppio clic che avvierà un'altra app. Puoi creare qualcosa di simile con Automater.app
di Apple. Ma, sotto le copertine, stanno facendo qualcosa di simile a quello che py2app
fa per te, solo con più livelli in cima.
Altri suggerimenti
Aggiungendo alla risposta di Ned Deily, nel mio caso quando ho provato ad avviare l'applicazione Python usando un'applicazione AppleScript, inizialmente non ha funzionato. Ho scoperto che ha qualcosa a che fare con un qualche tipo di errore di codifica (sto usando UTF-8 e in passato avevo sentito la necessità di configurarlo su UTF-8).
Quindi, dopo ulteriori indagini, ho scoperto che posso ottenere questo risultato creando un'applicazione AppleScript con il seguente codice (modificando i percorsi di python3 e dell'applicazione Python in base alle esigenze):
esegui script di shell " export LC_ALL = en_US.UTF-8; export LANG = en_US.UTF-8; / usr / local / bin / python3 '/Users/USER/FOLDER/SCRIPT.py' & amp; > / dev / null & amp; "
Avvia l'applicazione Python senza alcuna finestra Terminale. L'applicazione AppleScript può quindi essere personalizzata con un'icona personalizzata come al solito e può essere posizionata nel Dock. Quando si fa clic, verrà avviato l'interprete Python, che viene comunque visualizzato nel Dock, ma senza finestre visibili.
Penso che questo possa essere utile per altri utenti.
'console hide' non nasconde il Terminale in OS X. Nasconde la console integrata di Tk, che è in realtà una reliquia dei giorni di MacOS Classic (e che è ancora comunemente usata su Windows).