PyQt5:菜单,QMenuBar对象

菜单:

  调用QMainWindow类的menuBar方法可以获得主窗口的QMenuBar对象,该对象表示主窗口的菜单栏,通过QMenuBar对象的addMenu方法可以在菜单栏中添加菜单项。然后通过addAction方法添加子菜单项。

  创建一个QMenuBar对象的方法为:fileMenu = menubar.addMenu('文件')

  创建一个不带子菜单项的菜单项的方法为QAction方法:newAct = PQW.QAction('新建',self)

  创建一个带子菜单项的菜单项的方法为QMenu:impMenu = PQW.QMenu('导入',self)

  添加一个带子菜单项的方法为addMenu():fileMenu.addMenu(impMenu)  #把“导入”这个子菜单项目添加到菜单栏的“文件”菜单项中。

  添加一个不带子菜单项的方法为addMenu():fileMenu.addAction(newAct)  #把“新建”这个子菜单项目添加到菜单栏的“文件”菜单项中。

实例代码:

import sys
import PyQt5.QtWidgets as PQW
import PyQt5.QtGui as PQG
import PyQt5.QtCore as PQC

class Menu(PQW.QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 新建一个菜单栏对象
        self.lbl = PQW.QLabel('print to here',self)
        self.lbl.move(50,150)
        menubar = self.menuBar()
        # 添加“文件”菜单项
        fileMenu = menubar.addMenu('文件')
        # 添加“新建”菜单项
        newAct = PQW.QAction('新建',self)
        # 添加“导入”菜单项 (带子菜单项)
        impMenu = PQW.QMenu('导入',self)
        impAct1 = PQW.QAction('从pdf导入',self)
        impAct2 = PQW.QAction('从word导入', self)
        # 为菜单添加单击处理时间
        fileMenu.addAction(newAct)
        fileMenu.addMenu(impMenu)
        impMenu.addAction(impAct1)
        impMenu.addAction(impAct2)
        impAct1.triggered.connect(lambda :self.actionHandler(1))
        impAct2.triggered.connect(lambda :self.actionHandler(2))

        self.setGeometry(300,300,300,200)
        self.setWindowTitle('菜单')
        self.show()

    def actionHandler(self,n):
        s = '从pdf文件导入'
        print(n)
        self.lbl.setText(s)
        self.lbl.adjustSize()

if __name__ == '__main__':
    app = PQW.QApplication(sys.argv)
    ex = Menu()
    sys.exit(app.exec_())

 运行效果:

原文地址:https://www.cnblogs.com/chenhaiming/p/9947446.html