2011-02-02 4 views
1

Possible en double:
How can I hide the console window in a PyQt app running on Windows?Comment cacher la fenêtre de la console pour mon application?

J'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 en ê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_()) 

Répondre

6

Utilisation pythonw.exe au lieu de python.exe

+0

Cool, ça fonctionne: D Merci! – Jason94

3

nom de votre fichier .pyw au lieu de .py

2

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 avec pythonw), et les fichiers .py se chargent dans une console. Alors oui, renommer en .pyw est probablement la solution la plus simple.

également - si vous compilez avec py2exe, vous devrez changer "console =" à "fenêtre ="

+0

Ceci est la meilleure réponse. Par exemple, j'ai eu le problème même si le fichier étendu dans .pyw, le raisonnement derrière le comportement est ce dont j'avais besoin pour résoudre le problème. – naftalimich

Questions connexes