我正在制作一个应用程序,在最小化时转到托盘图标,任务栏图标将被隐藏。
搜索我发现我可以隐藏图标,将windowflag更改为“ToolTip”。
然后当我重新打开程序时,我再次设置了“Window”标志。这是有效的,但是当我按下“X”关闭程序时它不会关闭,但它最小化到托盘。
可能是什么问题?
部分代码:
主窗口代码:
def changeEvent(self, e):
print e.type()
if e.type() == e.WindowStateChange:
if self.restore:
print "Normalized"
if platform.system() == "Windows":
self.setWindowFlags(QtCore.Qt.Window)
self.showNormal()
self.activateWindow()
restore = 0
e.accept()
elif self.windowState() & QtCore.Qt.WindowMinimized:
print "Minimized"
self.hide()
if platform.system() == "Windows":
self.setWindowFlags(QtCore.Qt.ToolTip)
event.accept()
else:
print "NONE"
def showW(self):
self.restore = 1
e = QtCore.QEvent(QtCore.QEvent.WindowStateChange)
QtGui.QApplication.sendEvent(self,e)
print e.isAccepted()
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'Message', "Are you sure to quit?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
print "ByeBye"
event.accept()
else:
event.ignore()
托盘代码图标:
def onTrayIconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.DoubleClick:
self.parent.showW()
如果我从不最小化窗口,所有看起来都可行,但在最小化后我无法关闭它。
我有closerequest屏幕,但是当我点击Yes时程序转到trayicon而不是关闭。
编辑:如果WindowFlag的注释全部有效,那么问题是还原窗口标志? 我正在使用Python 2.7和PyQt4。
答案 0 :(得分:0)
似乎有待解决!
我已添加:
QtGui.QApplication.quit()
到closeEvent(),就像这样:
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'Message', "Are you sure to quit?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
print "ByeBye"
QtGui.QApplication.quit()
event.accept()
else:
event.ignore()