菜单栏、工具栏与状态栏
菜单栏
在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。

QMenu类提供了一个可以添加到菜单栏的小空间,也用于创建上下文菜单和弹出菜单,每个QMenu对象都包含一个或多个QAction对象或级联的QMenu对象。

常用的方法

  • menuBar 返回主窗口的QMenuBar对象
  • addMenu 在菜单栏中添加一个新的QMenu对象
  • addAction 向QMenu小控件中添加一个操作按钮,其中包括文件或图标
  • setEnable 将操作按钮状态设置为启动或禁用
  • addSeperator 在菜单栏中添加一条分隔线
  • clear 删除菜单、菜单栏的内容
  • setShortcut 将快捷键关联到操作按钮
  • setText 设置菜单项的文本
  • setTitle 设置QMenu小控件的标题
  • text 返回与QAction对象关联的文本
  • title 返回QMenu小控件的标题
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class MenuDemo(QMainWindow):
    def __init__(self, parent=None):
        super(MenuDemo, self).__init__(parent)
        layout = QHBoxLayout()
        bar = self.menuBar()
        file = bar.addMenu("File")
        file.addAction("New")
        save = QAction("Save", self)
        save.setShortcut("Ctrl+S")
        file.addAction(save)
        edit = file.addMenu("Edit")
        edit.addAction("copy")
        edit.addAction("poste")
        quit =QAction("Quit", self)
        file.addAction(quit)
        # 菜单发射triggered信号
        file.triggered[QAction].connect(self.processtrigger)
        self.setLayout(layout)
        self.setWindowTitle("menu 例子")

    def processtrigger(self, q):
        print(q.text() + " is triggered")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = MenuDemo()
    demo.show()
    sys.exit(app.exec_())

Python pyqt5菜单加入combox_状态栏


QToolBar

QToolbar控件是由文本按钮、图标或其他控件组成的可移动的面板,位于菜单栏下方

常用的方法

方法 描述

  • addAction 添加具有文本或图标的工具按钮
  • addSeparator 分组显示工具按钮
  • addWidget 添加工具栏中按钮以外的控件
  • addToolBar 使用QMainWindow类的方法添加一个新的工具栏
  • setMovable 工具栏变得可移动
  • setOrientation 工具栏的方法可以设置为Qt.Horizontal或Qt.vertical
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class ToolBarDemo(QMainWindow):
    def __init__(self, parent=None):
        super(ToolBarDemo, self).__init__(parent)
        self.setWindowTitle("toolbar 例子")
        self.resize(300, 200)

        layout =  QVBoxLayout()
        tb = self.addToolBar("File")
        new = QAction(QIcon("./images/new.png"),'new',self)
        tb.addAction(new)
        
        open = QAction(QIcon("./images/open.png"),"open",self)
        tb.addAction(open)
        save = QAction(QIcon("./images/save.png"),"save",self)
        tb.addAction(save)
        tb.actionTriggered[QAction].connect(self.toolbtnpressed)
        self.setLayout(layout)

    def toolbtnpressed(self, a):
        print("Pressed tool button is ", a.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = ToolBarDemo()
    demo.show()
    sys.exit(app.exec_())

Python pyqt5菜单加入combox_菜单栏_02

QStatusBar
MainWindow对象在底部保留有一个水平条,作为状态栏(QStatusBar),用于显示永久的或临时的状态信息。

常用的方法
方法 描述

  • addWidget 在状态栏中添加给定的窗口的小控件对象
  • addPermanentWidget 在状态栏中永久添加给定的窗口小控件对象
  • showMessage 在状态栏中显示一条临时信息指定的时间间隔
  • clearMessage 删除正在显示的临时信息
  • removeWidget 从状态栏中删除指定的小控件
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class StatusDemo(QMainWindow):
    def __init__(self, parent = None):
        super(StatusDemo, self).__init__(parent)
        bar = self.menuBar()
        file = bar.addMenu("File")
        file.addAction("show")
        file.triggered[QAction].connect(self.processTrigger)
        self.setCentralWidget(QTextEdit())
        self.statusBar =  QStatusBar()
        self.setWindowTitle("QStatus 例子")
        self.setStatusBar(self.statusBar)

    def processTrigger(self, q):
        if(q.text() == "show"):
            self.statusBar.showMessage(q.text() + " 菜单选项被点击了",5000)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = StatusDemo()
    demo.show()
    sys.exit(app.exec_())

Python pyqt5菜单加入combox_控件_03


单击show菜单选项的时候,就会在状态栏显示提示信息。然后在5s后消失。