一、前言

QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow 常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工 具条按钮时,槽会被调用。

二、学习目标

1.QMainWindow界面实现

2.QMainWindow常用方法

3.添加菜单栏

4.添加工具栏

5.添加状态栏

三、知识点

1.【QMainWindow界面实现】

QMainWindow类提供一个有菜单条、工具栏、状态条的主应用程序窗口。

QAction就是一个实现某些功能的“动作”,可以为其编写槽函数,使用一个QAction对象可以创建菜单项、工具栏按钮,点击菜单项或工具栏按钮就执行了关联的Action的槽函数。

  • 普通写法
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow

#1.创建app实例
app = QApplication(sys.argv)
#2.创建窗体实例
myMain = QMainWindow(flags=Qt.MSWindowsFixedSizeDialogHint)
#3.显示窗体
myMain.show()
#4.运行app
sys.exit(app.exec_())
  • 单继承写法
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow


class QmyMainWindow(QMainWindow):

    def __init__(self, parent=None):
        super().__init__(parent, flags=Qt.MSWindowsFixedSizeDialogHint)  # 调用父类的构造函数,创建QWidget窗体


if __name__ == '__main__':
    # 1.创建app实例
    app = QApplication(sys.argv)
    # 2.创建窗体实例
    myMain = QmyMainWindow()
    # 3.显示窗体
    myMain.show()
    # 4.运行app
    sys.exit(app.exec_())

2.【QMainWindow常用方法】

由于QMainWindow类继承自QWidget类,所以QWidget有的属性和方法,也适用于QMainWindow。

# 设置窗口位置及大小
        self.move(150, 150)
        self.resize(400, 500)
        self.setWindowTitle('窗口坐标系统演示')
        # 设置气泡提示
        self.setToolTip('这是一个气泡显示')
        # 设置图标
        self.setWindowIcon(QIcon('logo.png'))

3.【添加菜单栏】

  • 添加步骤
    1)创建窗口菜单栏
    2)给菜单栏添加菜单项目
    3)给菜单项目添加动作
    4)为动作绑定信号
  • 代码示例
    先实现两个槽函数,文件新建及文件保存:
def new_action(self):
        print("这是新建选项!")

    def save_action(self):
        print("这是保存选项!")

添加菜单栏:

# 1.创建窗口菜单栏
        self.bar = self.menuBar()
        # 2.给菜单栏添加菜单项目
        self.file = self.bar.addMenu("文件")
        # 3.给菜单项目添加动作
        self.new = self.file.addAction("新建")
        self.save = self.file.addAction("保存")
        self.save.setShortcut("CTRL+S")      # 设置快捷键
        # 4.为动作绑定信号
        self.new.triggered.connect(self.new_action)  # 信号关联槽函数
        self.save.triggered.connect(self.save_action)  # 信号关联槽函数

4.【添加工具栏】

  • 添加步骤
    1)创建窗口工具栏
    2)为工具栏添加动作
    3)为动作绑定信号
  • 代码示例
    先实现两个槽函数,文件新建及文件保存:
def new_action(self):
        print("这是新建选项!")

    def save_action(self):
        print("这是保存选项!")

添加菜单栏:

# 1.创建窗口工具栏
        self.toolBar = self.addToolBar("File")
        # 2.创建新的动作,添加到工具栏
        self.new = QAction(QIcon('logo.png'), "new", self)
        self.save = QAction(QIcon("logo.png"), "save", self)
        self.toolBar.addAction(self.new)
        self.toolBar.addAction(self.save)
        # 3.为动作绑定信号
        self.new.triggered.connect(self.new_action)  # 信号关联槽函数
        self.save.triggered.connect(self.save_action)  # 信号关联槽函数

5.【添加状态栏】

  • 添加步骤
    1)先创建一个状态栏
    2)然后将状态栏设置到窗口
    3)将需要显示的信息显示在窗口
  • 代码示例
# 1.先创建一个状态栏
        self.statuBar = QStatusBar()
        # 2.然后将状态栏设置到窗口
        self.setStatusBar(self.statuBar)
        # 3.将需要显示的信息显示在窗口
        self.statuBar.showMessage('这是状态栏信息', 5000)