我创建了一个使用 PyQt4 在后台运行的程序。系统托盘图标是在一个单独的线程中创建的,它允许我在创建并放置在托盘中之后与主程序进行交互。我以前在 Ubuntu 10.04 中从来没有遇到过这个问题。但是,我最近升级到了 Ubuntu 12.04,由于某种原因,甚至没有我想要的 QSystemTrayIcon 的踪迹。谁能告诉我这里到底发生了什么?我在 AskUbuntu 和 SO 上查找了有关我的问题的帖子,但似乎在数据库中找不到与我的问题匹配的任何内容。我只包含了我认为相关的部分代码,但如有必要,我会提供更多信息。
编辑:我已经在 Ubuntu 中修改了托盘面板白名单,并将其设置为['all']
,因此我能够确定这不是问题。
相关代码:
class notify(threading.Thread, QtGui.QSystemTrayIcon):
def __init__(self, process, iconMain, iconNew, parent=None):
threading.Thread.__init__(self)
QtGui.QSystemTrayIcon.__init__(self, iconMain, parent)
self.menu = QtGui.QMenu(parent)
self.menuNew = QtGui.QMenu(parent)
viewAdsAction = self.menu.addAction("View Ads")
textModeAction = self.menu.addAction("Text-Mode")
exitAction = self.menu.addAction("Exit")
textModeActionNew = self.menuNew.addAction("PC-Mode")
exitActionNew = self.menuNew.addAction("Exit")
self.iconMain = iconMain
self.iconNew = iconNew
self.setContextMenu(self.menu)
self.process = process
self.textMode = False
在 main() 中执行:
def main():
os.chdir(os.getenv("HOME") + "/.Phones")
beginMain = mainProgram()
beginMain.start()
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
notifications = notify(beginMain, QtGui.QIcon("icon-58x58.xpm"), QtGui.QIcon("notify.xpm"), w)
notifications.show()
notifications.start()
sys.exit(app.exec_())