序言
最近在搞一个项目, 用到了 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
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了