Question

J'essaie de cacher le terminal lorsque je lance une application basée sur l'interface graphique Tkinter, mais lorsque je double-clique sur le fichier app.py sous OSX, la fenêtre du terminal apparaît. J'ai essayé de changer l'extension en .pyw et de la lancer avec / usr / bin / pythonw, mais quoi qu'il en soit, la fenêtre Terminal apparaît toujours.

J'ai même essayé d'ajouter le test / sauf ci-dessous, mais lorsque je l'exécute, le message d'erreur suivant s'affiche: 'nom de commande non valide "console". dans la fenêtre de terminal qui apparaît.

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

Je n'ai trouvé aucun moyen de masquer la fenêtre du terminal. Quelqu'un a des idées?

Était-ce utile?

La solution

En double-cliquant sur un fichier .py sous OS X, vous êtes probablement en train de lancer une instance du gui Python via le Python Launcher.app fourni avec Pythons OS X. Vous pouvez le vérifier en sélectionnant le fichier .py dans le Finder et en effectuant un Obtenir des informations dessus. Python Launcher est une application très simple qui démarre Python via une commande Terminal.app. Pour lancer directement votre propre application d’interface graphique Python, l’approche privilégiée consiste à créer une application simple à l’aide de py2app . Il existe un bref tutoriel ici .

EDIT:

Bien sûr, il existe d'autres moyens, mais l'un d'entre eux ajouterait probablement davantage de niveaux d'indirection. Pour effectuer un lancement normal, " double-cliquable " application, vous avez besoin d'une sorte de structure d'application. C’est ce que py2app vous permet de créer directement.

Une alternative très simple est de tirer parti de la capacité de l'éditeur AppleScript à créer une application de lancement. Dans l'éditeur AppleScript :

  • / Applications / Utilitaires / AppleScript Editor.app sous OS X 10.6

  • / Applications / AppleScript / Script Editor.app dans 10.5

créez un nouveau script similaire à celui-ci:

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

puis Enregistrer sous .. avec Format de fichier - > Application . Ensuite, vous aurez une application double-cliquable qui lancera une autre application. Vous pouvez créer quelque chose de similaire avec Automater.app d'Apple. Mais, sous les couvertures, ils font quelque chose de similaire à ce que py2app fait pour vous, avec juste plus de couches en haut.

Autres conseils

Ajout à la réponse de Ned Deily, dans mon cas, lorsque j’ai essayé de lancer l’application Python à l’aide d’une application AppleScript, cela ne fonctionnait pas initialement. J'ai découvert qu'il y avait un problème avec une sorte d'erreur de codage (j'utilise UTF-8 et j'avais déjà eu besoin de le configurer en UTF-8).

Ainsi, après des recherches plus approfondies, j'ai découvert que je pouvais y parvenir en créant une application AppleScript avec le code suivant (ajustant les chemins d'accès de python3 et de l'application Python en fonction des besoins):

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

Il lance l'application Python sans aucune fenêtre de terminal. L'application AppleScript peut ensuite être personnalisée avec une icône personnalisée, comme d'habitude, et peut être placée dans le Dock. Lorsque vous cliquez dessus, il lancera l’interprète Python, qui apparaît toujours dans le Dock, mais sans fenêtre visible.

Je pense que cela pourrait être utile aux autres utilisateurs.

'masquer la console' ne cache pas le terminal sous OS X. Il cache la console intégrée de Tk, qui est en réalité une relique de l'époque MacOS Classic (et qui est toujours utilisée sous Windows).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top