QtGui.QSystemTrayIcon settooltip无法在debian中工作

时间:2017-01-22 17:02:27

标签: python linux qt debian pyqt4

以下代码适用于debian jessie,但不适用于debian延伸。 代码显示系统托盘中的图标。在Jessie中,它正确显示了工具提示,但在Debian Stretch中,工具提示文本显示为文件名,而不是我设置的。

不确定我可以在这做什么样的调试,并知道可能是什么问题。 它正在使用 在debian jessie中的python 2.7.9 在debian stretch中的python 2.7.13

#!/usr/bin/python -u

import sys
from PyQt4 import QtGui, QtCore

import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)

def main():
   app = QtGui.QApplication(sys.argv)

   trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon('test.png'), app)
   menu = QtGui.QMenu()
   exitAction = menu.addAction("Exit")
   trayIcon.setContextMenu(menu)

   trayIcon.setToolTip('test tool tip')

   trayIcon.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

1 个答案:

答案 0 :(得分:0)

这看起来像qt4问题。 pyqt5 + python3解决了它。 Debian stretch使用KDE 5,它基于KDE 5(等离子)架构。使用pyqt5将程序转换为python3解决了问题

#!/usr/bin/python3 -u

import sys
from PyQt5 import QtGui, QtCore,QtWidgets
from PyQt5 import Qt

import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)

def main():
   app = QtWidgets.QApplication(sys.argv)

   w = QtWidgets.QWidget()
   trayIcon = QtWidgets.QSystemTrayIcon(QtGui.QIcon('test.png'), w)
   menu = QtWidgets.QMenu()
   exitAction = menu.addAction("Exit")
   trayIcon.setContextMenu(menu)

   trayIcon.setToolTip('test tool tip')

   trayIcon.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()