首页 > 解决方案 > 如何在左键单击时在 QSystemTrayIcon 中显示上下文菜单

问题描述

QSystemTrayIcon 文档

我一直在查看此小部件的文档。我有一个工作图标和一个上下文菜单,但是我希望能够在有人左键单击时显示上下文菜单。这可能吗?

编辑:

标签: pythonpyside2

解决方案


当激活原因为 时,您可以将QSystemTrayIcon.activated信号连接到呼叫。QMenu.popupQSystemTrayIcon.Trigger

import sys
from PySide2.QtWidgets import *
from PySide2.QtGui import *

class TrayIcon(QSystemTrayIcon):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.activated.connect(self.showMenuOnTrigger)

    def showMenuOnTrigger(self, reason):
        if reason == QSystemTrayIcon.Trigger:
            self.contextMenu().popup(QCursor.pos())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    tray = TrayIcon(QIcon('icon.png'))
    menu = QMenu()
    menu.addAction('Action 1')
    menu.addAction('Action 2')
    tray.setContextMenu(menu)
    tray.show()
    sys.exit(app.exec_())

推荐阅读