欢迎光临!
若无相欠,怎会相见

PyQt5 – QMainWindow 窗口控件

序言

最近在搞一个项目, 用到了 GUI, 因此打算使用 PyQt5 进行编写界面。 记录一下学习笔记–QMainWindow窗口, 学习自《PyQt5快速开发与实战》

正文

QMainWindow 主窗口为用户提供一个应用程序框架,有自己的布局, 可以在布局中添加控件(工具栏、菜单栏和状态栏)。

QMainWindow、 QWidget 和 QDialog 三个类都是用来创建窗口的, 可以直接使用, 也可以继承后再使用

QMainWindow 窗口可以包含菜单栏、 工具栏、状态栏、标题栏等,是最常见的窗口形式, 也可以说是 GUI 程序的主窗口, 如图所示:

QDialog 是对话框窗口的基类。 对话框用于执行短期任务, 或者与用户进行互动。 QDialog 窗口没有菜单栏、 工具栏、状态栏, 如图所示: 

如果是主窗口, 就是用 QMainWindow 类; 如果是对话框, 就是用 QDialog 类; 如果不确定, 或者有可能作为顶层窗口,或嵌入其他窗口中, 就使用 QWidget 类。

QMainWindow 是一个顶层窗口, 其中会有一个控件 QWidget 占位符来占着中心窗口, 可以使用 setCentralWidget() 设置中心窗口。

QMainWindow 继承自 QWidget 类, 拥有它的所有派生方法和属性。 较重要的方法如下表:

方法 描述
addToolBar() 添加工具栏
centralWidget() 返回窗口中心的一个控件,未设置时返回 NULL
menuBar() 返回主窗口的菜单栏
setCentralWidget() 设置窗口中心的控件
setStatusBar() 设置状态栏
statusBar() 获得状态栏对象后,调用状态栏对象的 showMessage(message, int timeout=0) 方法,显示状态栏信息。 其中第一个参数是要显示的状态栏信息;第二个参数是信息停留的时间,单位是毫秒,默认是0,表示一直显示状态栏信息

QMainWindow 不能设置布局 (使用 setLayout() 方法),因为它有自己的布局

示例代码如下:

import sys

from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtGui import QIcon


class MainWidget(QMainWindow):
	def __init__(self, parent=None):
		super(MainWidget, self).__init__(parent)
		# 设置主窗体标签
		self.setWindowTitle("QMainWindow 例子")
		self.resize(400, 200)
		self.menu = self.menuBar()
		self.menu.addMenu('文件')
		self.menu.addMenu('编辑')
		self.menu.addMenu('视图')
		self.menu.addMenu('工具')
		self.menu.addMenu('帮助')
		self.status = self.statusBar()
		self.status.showMessage("这是状态栏提示", 500000)


if __name__ == "__main__":
	app = QApplication(sys.argv)
	app.setWindowIcon(QIcon("./images/cartoon1.ico"))
	main = MainWidget()
	main.show()
	sys.exit(app.exec_())

结语

QMainWindow 窗口就先这样

如有错误,敬请指出, 感谢指正~            — 2022-05-13 22:58:20

赞(0) 打赏
转载请注明:飘零博客 » PyQt5 – QMainWindow 窗口控件
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临