Comment puis-je cacher la fenêtre de console pour mon application? [dupliquer]
-
28-10-2019 - |
Question
Possible en double: Comment puis-je cacher la fenêtre de la console dans une application PyQt fonctionnant sous Windows?
Je l'ai fait une application simple qui ouvre une QWebView mais en plus de la fenêtre d'application fenêtre de la console Windows est ouverte à.
Quelle pourrait être la raison?
import sys
import socket
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebView
class AppWindow(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 200, 25)
self.setWindowTitle('TrayIP')
self.create_sys_tray()
self.hostname = socket.gethostname()
self.ip = socket.gethostbyname(self.hostname)
self.label = QLabel("IP: " + self.ip, self)
self.label.setFont(QtGui.QFont('Helvetica', 14))
self.timer = QTimer()
self.connect( self.timer, QtCore.SIGNAL('timeout()'), self.timerupdate)
self.timer.start(10000)
def timerupdate(self):
self.web = QWebView()
self.web.load( QUrl('http://xxx') )
def create_sys_tray(self):
self.sysTray = QtGui.QSystemTrayIcon(self)
self.sysTray.setIcon( QtGui.QIcon('ico.ico') )
self.sysTray.setVisible(True)
self.connect(self.sysTray, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.on_sys_tray_activated)
self.sysTrayMenu = QtGui.QMenu(self)
act = self.sysTrayMenu.addAction("FOO")
def on_sys_tray_activated(self, reason):
if self.isVisible ():
self.setVisible(False)
else:
self.setVisible(True)
app = QtGui.QApplication(sys.argv)
window = AppWindow()
window.show()
sys.exit(app.exec_())
La solution
Utilisez pythonw.exe au lieu de python.exe
Autres conseils
le nom de votre fichier .pyw au lieu de py
Sur les installations par défaut de Windows, les fichiers .pyw sont ouverts sans la fenêtre de la console (car ils sont chargés de pythonw), et les fichiers .py charge dans une console. Alors oui, changement de nom à .pyw est probablement solution la plus simple.
De plus - si vous compilez avec py2exe, vous devrez changer « console = » à « fenêtre = »