QtGui.QSystemTrayIcon settooltip 在 debian stretch 中不起作用



以下代码在 debian jessie 中运行良好,但在 debian stretch 中则不行。代码在系统托盘中显示图标。在 Jessie 中,它正确地显示了工具提示,但在 Debian Stretch 中,工具提示文本显示为文件名,而不是我设置的内容。

不确定我可以在这里进行哪种调试并知道可能是什么问题。它正在使用Debian Jessie 中的 Python 2.7.9Debian 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()

这看起来像一个qt4问题。 pyqt5 + python3 解决了它。Debian stretch 使用 KDE 5,它基于 KDE 5(Plasma)架构。使用 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()

最新更新