Comment cacher une fenêtre de console en python?
j'écris un bot IRC en Python.
je souhaite faire des binaires autonomes pour Linux et Windows de celui-ci. Et surtout je souhaite que lorsque le bot démarre, la fenêtre de la console se cache et que l'utilisateur ne puisse pas voir la fenêtre.
Que puis-je faire pour ça?
6 réponses
il suffit de le sauvegarder avec une extension .pyw
. 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 Python s'associe automatiquement .fichiers py avec python.exe pour qu'un double-clic sur un fichier Python l'exécute comme un script. L'extension peut également être .pyw, dans ce cas, la fenêtre de la console qui apparaît normalement est supprimée.
sous linux, lancez-le, pas de problème. Dans Windows,vous voulez utiliser l'exécutable pythonw.
mise à Jour
OK, si je comprends la question dans les commentaires, vous demandez comment faire pour que la fenêtre de commande dans laquelle vous avez démarré le bot à partir de la ligne de commande disparaisse après?
- UNIX (Linux)
$ nohup mypythonprog &
- Windows
C:/> démarrer pythonw mypythonprog
je penser c'est le droit. Dans tous les cas, vous pouvez fermer le terminal.
sur les systèmes Unix (y compris Linux, macOS, et BSD)
utilisez nohup mypythonprog &
, et vous pouvez fermer la fenêtre du terminal sans perturber le processus. Vous pouvez également lancer exit
si vous courez dans le nuage et que vous ne voulez pas laisser un processus d'interpréteur de commandes suspendu.
Sur Les Systèmes Windows
sauvegardez le programme avec une extension .pyw
et maintenant il s'ouvrira avec pythonw.exe
. Pas de fenêtre shell.
Par exemple, si vous avez foo.py
, vous devez le renommer en foo.pyw
.
si tout ce que vous voulez faire est d'exécuter votre Script Python sur un ordinateur windows qui a l'interpréteur Python installé, en convertissant l'extension de votre script enregistré à partir de '.py 'to'.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 faire les changements suivants à votre "setup.py' file.
l'exemple suivant est d'un simple python-GUI faite en utilisant Tkinter:
from distutils.core import setup
import py2exe
setup (console = ['tkinter_example.pyw'],
options = { 'py2exe' : {'packages':['Tkinter']}})
remplacer " console "dans le code ci-dessus par"windows"..
from distutils.core import setup
import py2exe
setup (windows = ['tkinter_example.pyw'],
options = { 'py2exe' : {'packages':['Tkinter']}})
cela n'ouvrira que l'interface graphique générée par Tkinter et aucune fenêtre de console.
Quelques informations supplémentaires. pour les situations qui auront besoin de la solution win32gui posté par Mohsen Haddadi plus tôt dans ce fil:
depuis python 361, win32gui & win32con ne font pas partie de la bibliothèque std de python. Pour les utiliser, le paquet pywin32 devra être installé; maintenant possible via pip.
plus d'informations sur le paquet pywin32 est à: comment utiliser le module win32gui avec Python? .
aussi, à appliquer le pouvoir discrétionnaire lors de la fermeture d'une fenêtre afin de ne pas fermer par inadvertance une fenêtre au premier plan, la résolution pourrait être étendue selon les lignes suivantes:
try :
import win32gui, win32con;
frgrnd_wndw = win32gui.GetForegroundWindow();
wndw_title = win32gui.GetWindowText(frgrnd_wndw);
if wndw_title.endswith("python.exe"):
win32gui.ShowWindow(frgrnd_wndw, win32con.SW_HIDE);
#endif
except :
pass
cachez votre console. Implémentez ces lignes dans votre code en premier pour commencer à cacher votre console en premier.
import win32gui, win32con
The_program_to_hide = win32gui.GetForegroundWindow()
win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)