2011-02-02 146 views
1

可能重複:
How can I hide the console window in a PyQt app running on Windows?如何隱藏我的應用程序的控制檯窗口?

我做了一個簡單的應用程序打開一個QWebView但除了應用程序窗口的Windows控制檯窗口被打開。

這可能是什麼原因?

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_()) 

回答

6

使用pythonw.exe代替python.exe

+0

酷,它的工作原理:d謝謝! – Jason94 2011-02-02 13:28:44

3

名文件.pyw代替的.py

2

在默認情況下Windows安裝,.pyw文件,但是沒有控制檯窗口中打開(因爲它們'用pythonw加載)和.py文件加載到控制檯中。所以是的,重命名爲.pyw可能是最簡單的解決方案。

而且 - 如果你與py2exe編譯,你就必須改變「控制檯=」到「窗口=」

+0

這是最好的答案。舉個例子,即使文件擴展名爲.pyw,我也遇到了這個問題,行爲背後的推理就是我需要解決的問題。 – naftalimich 2015-03-01 03:07:26

相關問題