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