2017-05-31 103 views
2

我正在使用TrayIcon,我已經添加了一個「退出」QAction,現在,我想在TrayIcon菜單中單擊退出時執行某個功能。下面是我的代碼有:PyQt - 連接QAction功能

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

這是怎麼了我的菜單根據您的代碼連接圖標的功能:

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

功能self.my_function然後就不管你想有。

0
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類中工作。 Ps。您需要在點擊操作時實施要調用的方法。在我的情況下,他們被稱爲(self.handleShowAction,self.handleTrayIconButton和self.close_application)。