我遇到了QSystemTrayIcon应用程序的问题。
我使用SystemTrayIcon作为父级或祖父级的任何对话框都将在关闭时终止整个应用程序,即使我覆盖了"拒绝"方法。
这是一个没有图标的简化示例。当您运行它(此处为Windows 7)时,任务栏上应该有一个空白的托盘图标应用程序。如果您单击它,将弹出一个空的对话框。单击" X"关闭对话框也将完全终止python进程。
from PySide import QtGui, QtCore
class RestartDialog(QtGui.QDialog):
def __init__(self, parent):
super(RestartDialog, self).__init__()
def reject(self):
self.hide()
class SystemTrayIcon(QtGui.QSystemTrayIcon):
def __init__(self, parent=None):
QtGui.QSystemTrayIcon.__init__(self, parent)
self.activated.connect(self.click_trap)
def click_trap(self, value):
''' Left click tray function '''
if value == self.Trigger: #left click!
self.dialog = RestartDialog(self)
self.dialog.show()
def show(self):
QtGui.QSystemTrayIcon.show(self)
if __name__ == "__main__":
proc = QtGui.QApplication([])
APP = SystemTrayIcon()
APP.show()
proc.exec_()
答案 0 :(得分:5)
尝试在创建QApplication后添加此内容:
proc.setQuitOnLastWindowClosed(False)
默认情况下为true,因此关闭对话框后,您的eventloop将会终止。