我正在处理的 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_()
尝试在创建 QApplication 后添加:
proc.setQuitOnLastWindowClosed(False)
默认情况下为真,因此您的事件循环将在您关闭对话框后终止。
Tôi là một lập trình viên xuất sắc, rất giỏi!