PyQt - 将QAction连接到函数

16

我正在使用一个TrayIcon,我已经添加了一个"退出"QAction,现在,当点击TrayIcon菜单中的退出时,我想执行某个特定的函数。这里是我拥有的代码:

class TrayIcon(QSystemTrayIcon):
    """
    Displays a system tray icon
    """

    def __init__(self, interface: Interface) -> None:
        """
        Constructor
        :param interface: Interface to show when the tray icon is clicked
        """
        super().__init__(QIcon(resource_filename("ezstorage.resources.img.tray_icon", "folder.png")))
        self.interface = interface
        self.setVisible(True)
        self.show()
        self.activated.connect(self.clicked)
        menu = QMenu()
        action = QAction("Exit")
        menu.addAction(action)
        self.setContextMenu(menu)
2个回答

32

根据您的代码,这是我如何将菜单中的图标连接到功能的方法:

self.menu = QMenu()
self.action = QAction("Exit")
self.menu.addAction(self.action)
self.action.triggered.connect(self.my_function)

函数self.my_function然后执行你想要的任何操作。


谢谢。谢谢你,克里斯托夫。 - John Smith Optional

5
def setupTrayIcon(self, MainWindow):
    self.tray_icon = QSystemTrayIcon()
    self.tray_icon.setIcon(QIcon("logo.png"))
    self.tray_icon.setToolTip("System Tray Management")
    self.tray_icon.show()
    self.tray_icon.tray_menu = QtWidgets.QMenu()
def setupActions(self,MainWindow):
    self.tray_icon.show_action = QtWidgets.QAction("Show", MainWindow)
    self.tray_icon.quit_action = QtWidgets.QAction("Exit", MainWindow)
    self.tray_icon.hide_action = QtWidgets.QAction("Hide", MainWindow)
    self.tray_icon.tray_menu.addAction(self.tray_icon.show_action)
    self.tray_icon.tray_menu.addAction(self.tray_icon.hide_action)
    self.tray_icon.tray_menu.addAction(self.tray_icon.quit_action)
    self.tray_icon.setContextMenu(self.tray_icon.tray_menu)
def ConnectAction(self, MainWindow):
    self.tray_icon.show_action.triggered.connect(self.handleShowAction)
    self.tray_icon.hide_action.triggered.connect(self.handleTrayIconButton)
    self.tray_icon.quit_action.triggered.connect(self.close_application)

这展示了在MainWindow类中的工作原理。 注意,您需要实现方法,在单击操作时调用。在我的情况下,它们被称为(self.handleShowAction, self.handleTrayIconButton和self.close_application)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接