最近我创建了一个简单的基于PyQt
的应用。它所要做的就是制作一个系统托盘图标。问题是我可以看到应用程序正在运行,但是没有托盘图标。当我在课堂外移动托盘图标代码时,正常工作。 那么为什么这里的课程有问题呢?
我的代码:
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication(sys.argv)
class myApp(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.createTrayIcon()
def createTrayIcon(self):
self.trayIconMenu = QtGui.QMenu()
self.trayIconMenu.addAction("Close", lambda : exit(1))
self.trayIcon = QtGui.QSystemTrayIcon()
self.trayIcon.setIcon(QtGui.QIcon(r"icon.png"))
self.trayIcon.setToolTip("Tooltip")
self.trayIcon.setContextMenu(self.trayIconMenu)
self.trayIcon.show()
self.trayIcon.showMessage("Title", u"Content")
myApp()
sys.exit(app.exec_())
答案 0 :(得分:1)
你在主处忘记了这一行吗?
.
.
.
objectMyApp = myApp()
objectMyApp.show() # Or don't show please comment this in.
sys.exit(app.exec_())
问题是你的创建对象,但没有放入变量。如果你放入变量,那就更好了。
答案 1 :(得分:1)
由于您没有将对myApp()
的调用中创建的对象存储在变量中,因此Python会在某些时候对其进行垃圾回收。因此,托盘图标可能会在很短的时间内显示,但会在某些时候被清理并消失(这就是您所看到的)。
只要你改为myapp = myApp()
,你就可以了。