Frage

Ich versuche, den Terminal zu verstecken, wenn ich eine GUI Tkinter basierte Anwendung zu starten, aber wenn ich die app.py Datei auf OSX Doppelklick auf das Terminal-Fenster erscheint. Ich habe versucht, die Erweiterung Wechsel zu .pyw und versuchte es mit / usr / bin / pythonw startet, aber egal was, das Terminal-Fenster erscheint nach wie vor.

Ich habe sogar versucht, die versuchen das Hinzufügen / außer unten, aber wenn ich es laufen erhalte ich die Fehlermeldung: ‚ungültige Befehlsnamen‚Konsole‘‘ im Terminal-Fenster, das erscheint.

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

Ich habe nicht in der Lage gewesen, eine Art und Weise zu finden, die Terminal-Fenster erscheinen zu verstecken. Hat jemand irgendwelche Ideen?

War es hilfreich?

Lösung

Durch eine .py Datei auf OS X Doppelklicken auf, werden Sie wahrscheinlich eine Python gui Instanz über die mit OS X Pythons geliefert Python Launcher.app starten. Sie können das überprüfen, indem Sie die .py Datei im Finder auswählen und einen Get Info auf es zu tun. Python Launcher ist ein sehr einfältig App, die Python über einen Terminal.app Befehl startet. Um direkt auf Ihre eigene Python-GUI-Anwendung zu starten, ist der bevorzugte Ansatz ist eine einfache App erstellen mit py2app . Es gibt eine kurze Anleitung hier .

EDIT:

Es gibt andere Möglichkeiten, natürlich, aber die meisten wahrscheinlich jeder von ihnen würde mehr Dereferenzierungsebenen Zugabe. Um eine normale startbar, „double-klickbare“ Anwendung zu machen, müssen Sie irgendeine Art von App-Struktur. Das ist, was py2app können Sie erstellen direkt.

Eine sehr einfältig Alternative ist die Vorteile des Applescript-Editor der Fähigkeit zu nehmen einen Launcher App zu erstellen. Im AppleScript Editor:

  • /Applications/Utilities/AppleScript Editor.app in OS X 10.6

  • /Applications/AppleScript/Script Editor.app in 10,5

ein neues Skript ähnlich wie diese machen:

do shell script "/path/to/python /path/to/script.py &> /dev/null &"

und dann Save As.. mit File Format -> Application. Dann haben Sie eine Doppel klickbare App, die eine andere Anwendung starten. Sie können etwas ähnliches mit Apples Automater.app erstellen. Aber unter der Decke, tun sie etwas Ähnliches, was py2app für Sie tut, nur mit mehr Schichten auf.

Andere Tipps

Zusätzlich zu der Antwort von Ned Deily, meinen Fall im, wenn ich versuchte, die Python-Anwendung unter Verwendung einer Applescript-Anwendung zu starten, ist es zunächst nicht arbeiten. Ich entdeckte, dass es etwas mit irgendeiner Art der Codierung Fehler zu (Ich bin mit UTF-8 und in der Vergangenheit habe ich Bedürfnis verspürt hatte, um es auf UTF-8 konfiguriert werden).

So, nach einer weiteren Untersuchung entdeckte ich, dass ich dies durch die Schaffung eines Applescript-Programm mit dem folgenden Code (Einstellung der Pfade von python3 und der Python-Anwendung nach Bedarf) ausführen können:

do shell script "export LC_ALL=en_US.UTF-8; export LANG=en_US.UTF-8; /usr/local/bin/python3 '/Users/USER/FOLDER/SCRIPT.py' &> /dev/null &"

Es startet die Python-Anwendung ohne Terminal-Fenster. Das Applescript-Programm kann dann mit einem benutzerdefinierten Symbol wie gewohnt personalisiert wird und kann im Dock platziert werden. Wenn Sie darauf klicken, wird es das Python-Interpreter zu starten, die noch im Dock zeigt, aber ohne sichtbare Fenster.

Ich denke, diese an andere Benutzer nützlich sein können.

‚Konsole verstecken‘ nicht verstecken Sie das Terminal in OS X. Es verbirgt Tk integrierte Konsole, die wirklich ein Relikt aus dem MacOS Classic Days ist (und die immer noch häufig auf Windows-verwendet werden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top