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?

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top