一、前言
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)