【发布时间】:2014-04-23 23:31:20
【问题描述】:
即使通过activated 插槽正在执行,菜单仍然没有显示。我通过手动单击托盘图标和模拟单击进行了跟踪,并且它经历了相同的执行逻辑。
目前我有
class MyClass(QObject):
def __init__():
self._testSignal.connect(self._test_show)
self.myTrayIcon.activated.connect(lambda reason: self._update_menu_and_show(reason))
def show():
self._testSignal.emit()
@pyqtSlot()
def _test_show():
self._trayIcon.activated.emit(QtWidgets.QSystemTrayIcon.Trigger)
@QtCore.pyqtSlot()
def _update_menu_and_show(reason):
if reason in (QtWidgets.QSystemTrayIcon.Trigger):
mySystemTrayIcon._update_menu()
...
class MySystemTrayIcon(QSystemTrayIcon):
def _update_menu(self):
# logic to populate menu
self.setContextMenu(menu)
...
MyClass().show()
【问题讨论】:
-
我刚刚对 PyQt v4 做了一个快速测试,它似乎工作正常(示例在这里:pastebin.com/NkAQQyqt)。如果你看不出我所做的有什么不同,和/或将我的代码移植到 PyQt5 仍然会导致你的问题,这可能是 PyQt5 中的一个错误。
-
@three_pineapples 你的脚本帮助我意识到我的设置问题。现在有菜单不显示的问题。请查看修改。
-
@mingxiao 请删除不再相关的问题的早期部分,因为从技术上讲,您现在正在查看不同的问题。请记住,SO 不是一个讨论线程,它是一个问答论坛。问题必须独特且定义明确,以便它与答案相互关联。