92 votes

Comment cacher la fenêtre de la console en python ?

Je suis en train d'écrire un robot IRC en Python.

Je souhaite en faire des binaires autonomes pour Linux et Windows. Et surtout, je souhaite que lorsque le bot s'initie, la fenêtre de la console soit cachée et que l'utilisateur ne puisse pas voir cette fenêtre.

Qu'est-ce que je peux faire pour ça ?

149voto

mdec Points 2687

Il suffit de l'enregistrer avec un .pyw extension. Cela empêchera la fenêtre de la console de s'ouvrir.

Sur les systèmes Windows, il n'y a pas de notion de "mode exécutable". L'installateur de Python associe automatiquement les fichiers .py à python.exe de sorte qu'un double-clic sur un fichier Python le lancera comme un script. L'extension peut également être .pyw, dans ce cas, la fenêtre de console qui apparaît normalement est supprimée.

Explication au bas de la section 2.2.2.

44voto

Charlie Martin Points 62306

Sous linux, il suffit de l'exécuter, pas de problème. Sous Windows, vous devez utiliser l'exécutable pythonw.

Mise à jour

Ok, si je comprends bien la question dans les commentaires, vous demandez comment faire disparaître la fenêtre de commande dans laquelle vous avez lancé le bot depuis la ligne de commande ?

  • UNIX (Linux)

$ nohup mypythonprog &

  • Windows

C:/> start pythonw mypythonprog

I piense en c'est vrai. En tout cas, vous pouvez maintenant fermer le terminal.

28voto

Sur les systèmes Unix (y compris GNU/Linux, macOS et BSD)

Utilice nohup mypythonprog & et vous pouvez fermer la fenêtre du terminal sans interrompre le processus. Vous pouvez également exécuter exit si vous travaillez dans le nuage et ne voulez pas laisser un processus shell en suspens.

Sur les systèmes Windows

Sauvegarder le programme avec un .pyw et maintenant il s'ouvrira avec pythonw.exe . Pas de fenêtre d'obus.

Par exemple, si vous avez foo.py vous devez le renommer en foo.pyw .

23voto

Mohsen Haddadi Points 330

Cela cachera votre console. Implémentez d'abord ces lignes dans votre code pour commencer à cacher votre console.

import win32gui, win32con

the_program_to_hide = win32gui.GetForegroundWindow()
win32gui.ShowWindow(the_program_to_hide , win32con.SW_HIDE)

Mise à jour mai 2020 :

Si vous avez des problèmes sur pip install win32con sur l'invite de commande, vous pouvez simplement pip install pywin32 Puis sur votre script python, exécutez import win32.lib.win32con as win32con au lieu de import win32con .

Pour montrer à nouveau votre programme win32con.SW_SHOW fonctionne bien :

win32gui.ShowWindow(the_program_to_hide , win32con.SW_SHOW)

11voto

John918 Points 155

Si tout ce que vous voulez faire est d'exécuter votre script Python sur un ordinateur Windows sur lequel l'interpréteur Python est installé, convertir l'extension de votre script sauvegardé de '.py' en '.pyw' devrait faire l'affaire.

Mais si vous utilisez py2exe pour convertir votre script en une application autonome qui fonctionnerait sur n'importe quelle machine Windows, vous devrez apporter les modifications suivantes à votre 'setup.p

L'exemple suivant est une simple interface utilisateur python réalisée à l'aide de Tkinter :

from distutils.core import setup
import py2exe
setup (console = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Changez "console" dans le code ci-dessus par "Windows" .

from distutils.core import setup
import py2exe
setup (windows = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Ceci n'ouvrira que l'interface graphique générée par Tkinter et aucune fenêtre de console.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X