如何隐藏我的应用程序的控制台窗口?
可能重复的问题:
如何在Windows上运行的PyQt应用中隐藏控制台窗口?
我做了一个简单的应用,它打开了一个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_())
3 个回答
2
在默认的Windows安装中,.pyw文件是不会打开控制台窗口的(因为它们是用pythonw加载的),而.py文件则会在控制台中打开。所以,把文件名改成.pyw可能是最简单的解决办法。
另外,如果你是用py2exe进行编译的话,你需要把“console=”改成“window=”。
3
把你的文件命名为 .pyw,而不是 .py
6
用pythonw.exe代替python.exe