PyQt: Show menu in a system tray application

前端 未结 6 1103
后悔当初
后悔当初 2020-12-02 08:45

First of all, I\'m an experienced C programmer but new to python. I want to create a simple application in python using pyqt. Let\'s imagine this application it is as simple

6条回答
  •  南方客
    南方客 (楼主)
    2020-12-02 09:39

    Here is the PyQt5 version (was able to implement the Exit action of demosthenes's answer). Source for porting from PyQt4 to PyQt5

    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    # code source: https://stackoverflow.com/questions/893984/pyqt-show-menu-in-a-system-tray-application  - add answer PyQt5
    #PyQt4 to PyQt5 version: https://stackoverflow.com/questions/20749819/pyqt5-failing-import-of-qtgui
    class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
    
        def __init__(self, icon, parent=None):
            QtWidgets.QSystemTrayIcon.__init__(self, icon, parent)
            menu = QtWidgets.QMenu(parent)
            exitAction = menu.addAction("Exit")
            self.setContextMenu(menu)
    
    def main(image):
        app = QtWidgets.QApplication(sys.argv)
    
        w = QtWidgets.QWidget()
        trayIcon = SystemTrayIcon(QtGui.QIcon(image), w)
    
        trayIcon.show()
        sys.exit(app.exec_())
    
    if __name__ == '__main__':
        on=r''# ADD PATH OF YOUR ICON HERE .png works
        main(on)
    

提交回复
热议问题