带Qt的菜单栏/系统托盘应用程序

时间:2014-05-03 06:28:15

标签: python qt pyqt qtgui qmenu

我是Qt(PyQt)的新手,我正在尝试创建一个应用程序,其功能将从菜单栏/系统托盘执行。这里有一个完美的例子:

enter image description here

我无法找到关于如何做到这一点的好资源。有人可以建议。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找使用QMenuQMainWindow的菜单部分,至少。

在这里你可以找到一个C ++示例:

Menus Example

这里有一个PyQt4示例:

Menus and Toolbars in PyQt4

以下是为方便起见的内联代码:

import sys
from PyQt4 import QtGui

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               

        exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(QtGui.qApp.quit)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar')    
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

对于QSystemTrayIcon部分,您可以编写如下内容:

def main():
    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("Bomb.xpm"), w)
    menu = QtGui.QMenu(parent)
    exitAction = menu.addAction("Foo")
    trayIcon.setContextMenu(menu)

    trayIcon.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()