Pregunta

Posible duplicado:
¿Cómo puedo ocultar la ventana de la consola en una aplicación PYQT que se ejecuta en Windows?

He hecho una aplicación simple que abre un Qwebview, pero además de la ventana de la ventana de la aplicación, se abre la ventana de la consola de Windows.

¿Cuál podría ser la razón de ésto?

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_())
¿Fue útil?

Solución

Use pythonw.exe en lugar de python.exe

Otros consejos

Nombra tu archivo .pyw en lugar de .py

En las instalaciones predeterminadas de Windows, los archivos .pyw se abren sin la ventana de la consola (porque están cargados con pythonw), y los archivos .py se cargan en una consola. Así que sí, cambiar el nombre de .pyw es probablemente una solución más fácil.

Además, si está compilando con py2exe, tendrá que cambiar "console =" a "window ="

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top