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_())
Était-ce utile?

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 = »

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