前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PyQt5的主窗口QMainWindow简介

PyQt5的主窗口QMainWindow简介

作者头像
星星在线
发布于 2019-05-28 08:41:23
发布于 2019-05-28 08:41:23
4.1K00
代码可运行
举报
运行总次数:0
代码可运行

看过上一篇我们知道,在PyQt5中了,所有的控件都是继承自。在桌面应用当中,我们常用的软件都会包含一个主窗口。主窗口就是承载所有控件的一个窗体。在PyQt5当中常用的主窗体有两种QMainWindow和QDialog。当然这两个也是继承自QWidget类。因为他们都继承自这个类,所以这三个类都是可以用来创建主窗口的,可以直接使用,也可以继承后再使用。

窗口类型

QMainWindow窗口可以包含菜单栏,工具栏,状态栏,标题栏等,所以是我们最常用的窗口形式。 QDialog是对话框窗口的基类对话框,主要用来执行短期任务或者与用户进行互动,它可以是模态的,也可以是非模态的。对话框没有菜单栏、工具栏、状态栏。模态指的是窗口打开的时候,它底下的父窗口是不可操作的;非模态就是当我们打开一个子窗口的时候,其下面的窗口也是可以操作的。对话框可以衍生为颜色选择对话框(QColorDialog)、字体对话框(DFontDialog)、文件选择对话框(DFileDialog)、输入对话框(DInputDialog)、消息确认框(QMessageBox)、进度条对话框(QProgressDialog)等等。继承关系如下:

QWidget继承关系图

对于主窗口的选择如果包含状态栏、工具栏、菜单栏等可以使用QMainWindow。如果只是对话框形式不包含以上几种就可以使用QDialog。如果不确定或者说他会作为顶层窗口(没有父窗口的窗口就是顶层窗口)或者嵌入到其他窗口中,那么就可以使用最根本的基类QWidget类。

主窗口的使用

在这里我们先看一下最常用的主窗口类QMainWindow,它为用户提供了一个应用程序框架,包含有自己的布局,可以在布局中添加控件。

看一下下面的这张图片就是QMainWindow。在它的中间会有一个QWidget占着中心的位置,我们可以使用setCentralWidget来设置中心窗口。

主窗口布局区域

因为QMainWindow继承自QWidget,所以拥有它的所有派生类方法和属性。而QMainWindow中有几个比较重要的方法。

方法

描述

addToolBar()

添加工具栏

centralWidget()

返回窗口中心的一个控件未设置时返回空

menuBar

返回主窗口的菜单栏

setCentralWidget()

设置窗口中心的控件

setStatusBar()

设置状态栏

statusBar()

获得状态栏对象

状态栏对象可以调用showMessage(message, timeout=0)方法显示状态栏信息,第1个参数是要显示的状态栏信息,第2个参数是信息停留的时间(单位是毫秒),默认是0表示一直显示状态栏信息。

一般在创建一个子窗口的时候,控件和布局管理器都是成对出现的。这里是指当一个控件作为载体上面承载了其他控件的时候才会使用布局管理器。如果只是一个单独的空间,那么是不需要和布局管理器配套使用的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QTextEdit, QPushButton, QWidget, QHBoxLayout

class Example(QMainWindow):
        def __init__(self):
            super().__init__()
            self.initUI()

        def initUI(self):
            self.widget = QWidget()
            # 设置中心窗口
            self.setCentralWidget(self.widget)

            self.textEdit = QTextEdit(self.widget)
            self.textEdit.setGeometry(100, 100, 100, 30)

            # 创建一个布局管理器
            layout = QHBoxLayout()
            btn1 = QPushButton()
            btn1.setText("按钮左")
            layout.addWidget(btn1)
            btn2 = QPushButton()
            btn2.setText("按钮右")
            layout.addWidget(btn2)
            self.widget.setLayout(layout)
            self.setGeometry(300, 300, 500, 500)
            self.setWindowTitle('QMainWindow综合使用')
            self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    example = Example()
    example.show()
    sys.exit(app.exec_())

在使用QMainWindow的时候,我们通常不会直接使用setLayout方法,而是通过设置窗口中心控件,然后创建一个布局管理器与窗口中心控件配套使用。

class Example(QMainWindow) 首先创建一个类继承自QMainWindow,然后执行初始化函数initUI()

self.widget = QWidget() self.setCentralWidget(self.widget) 创建一个窗口,将其设置为主窗口的中心窗口

self.textEdit = QTextEdit(self.widget) self.textEdit.setGeometry(100, 100, 100, 30) 创建一个编辑框,将其设置为主窗口的子控件QTextEdit(self.widget),创建的时候指定父控件,当然也可以在创建控件以后使用self.textEdit.setParent(self.widget)来设置其父窗口。

layout = QHBoxLayout(self.widget) 创建一个水平布局管理器,作为主窗口的布局管理器,这行代码相当于以下两行代码 layout = QHBoxLayout() self.widget.setLayout(layout)

布局管理器的具体介绍,请查看之前的那篇文章,QMainWindow的介绍今天就到这里,你Get到了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python爬虫实战之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
在 PyQt5 中,菜单栏(QMenuBar)、工具栏(QToolBar)和状态栏(QStatusBar)是 QMainWindow 提供的标准控件,用于帮助用户更好地与应用程序交互。它们是桌面应用程序的常见组成部分:
半截诗
2024/10/09
2.2K0
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
【Python篇】PyQt5 超详细教程——由入门到精通(序篇) 【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
半截诗
2024/10/09
1.3K0
【Python篇】PyQt5 超详细教程——由入门到精通(中篇二)
Qt入门系列(二)
选中mainWindow.cpp右键->在Explor中显示->粘贴进来(显示包含的目录)
用户9831583
2022/06/16
2K0
Qt入门系列(二)
PyQt5案例汇总(完整版)
PyQt5是一套绑定Qt5的应用程序框架。他在Python 2.x和3.x中都是可用的。该教程使用的是Python3.x。
victorfengming
2021/11/26
5.2K0
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
PyQt5 是 Python 的图形用户界面 (GUI) 框架,它基于强大的 Qt 库。Qt 是一个跨平台的 C++ 框架,用于构建桌面应用程序。通过 PyQt5,我们可以用 Python 轻松构建跨平台的桌面应用程序,支持 Windows、macOS 和 Linux。
半截诗
2024/10/09
17.9K0
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
【QT】Qt 窗口 (QMainWindow)
QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的布局。QMainWindow 包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个 中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为 QMainwindow 中 各组件所处的位置:
YoungMLet
2024/07/16
4880
【QT】Qt 窗口 (QMainWindow)
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/05/10
1.9K0
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
在 PyQt4 中的菜单和工具栏¶
QtGui.QMainWindow 类提供了一个应用的主窗口。这使得我们可以创建典型的应用框架,包括状态栏,工具栏和菜单。
bear_fish
2018/09/20
6310
在 PyQt4 中的菜单和工具栏¶
http://www.cppblog.com/mirguest/archive/2012/02/05/164982.html
bear_fish
2018/09/20
6070
PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/06/06
4.7K0
PyQt5 布局管理(水平、垂直、网格、表单、嵌套、QSplitter)
【QT】:QMainWindow 窗口
Qt 中的菜单栏是通过 QMenuBar 这个类来实现的。一个主窗口最多只有一个菜单栏,位于主窗口顶部、主窗口标题栏下面。
IsLand1314
2025/02/18
2140
【QT】:QMainWindow 窗口
Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)
在Python Qt GUI设计:窗口布局管理方法【基础篇】(基础篇—5)文章中,聊到了如何使用Qt Designer进行窗口布局管理,其实在Qt Designer中可以非常方便进行窗口布局管理设计,本篇博文在4种窗口布局方式基础上继续深入聊聊API函数~
不脱发的程序猿
2021/10/09
4.7K0
Python Qt GUI设计:窗口布局管理方法【强化篇】(基础篇—6)
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
文章目录 1. 状态栏 2. 窗口居中显示 3. 关闭窗口 4. QWidget 5. 添加图标 6. 气泡提示信息 7. QLabel 添加快捷键 8. QLineEdit echoMode 验证器 inputMask 综合练习 9. QTextEdit learn from 《PyQt5 快速开发与实战》 1. 状态栏 self.statusbar.showMessage("hello, Michael", 2000),第二个参数是显示多长时间ms,默认无限长时间 # -*- coding: utf-8
Michael阿明
2022/05/10
2.6K0
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
2.4默认创建有窗口类,yWidget,基类有三种选择:QWidget、QMainWindowQDialog
Arya
2024/10/31
5510
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
【Qt】:Dialog 对话框
模态对话框 指的是:显示后无法与父窗口进行交互,是⼀种阻塞式的对话框。使用 QDialog:: exec () 函数调用。
IsLand1314
2025/02/28
1620
【Qt】:Dialog 对话框
PyQt5 入门
我的路径是:D:\ProgramData\Anaconda3\envs\cv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
Michael阿明
2022/05/10
1.5K0
PyQt5 入门
PYQT中的菜单和工具栏
在这部分的PyQt5教程中,我们将创建菜单和工具栏。菜单式位于菜单栏的一组命令操作。工具栏是应用窗体中由按钮和一些常规命令操作组成的组件。
小飞侠xp
2018/12/24
2.7K0
PYQT中的菜单和工具栏
学习 QT 过程中的一些笔记
学习 QT 时候做的一些笔记 目录 目录 按钮常用控件 API QT 窗口体系 信号和槽 点击按钮关闭窗口 自定义信号和槽 当自定义信号和槽出现重载 无参信号和有参信号与槽连接 Lambda 表达式 利用 Lambda 表达式实现点击按钮关闭窗口 QMainWindow 菜单栏 工具栏 状态栏 标签控件 浮动窗口 核心部件 资源文件 对话框 话框分类: 标准对话框 其他标准对话框 界面布局 控件 按钮组 QListWidget 列表容器 按钮常用控件 API QPushButton * btn = new
HauHau
2022/01/12
1.2K0
QT Creator 快速入门教程 读书笔记(二)
一 窗口部件 基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子: 窗口部件(Widget)简称部件,是QT中建立界面的
用户1198337
2018/01/19
1.3K0
QT Creator 快速入门教程 读书笔记(二)
PyQt5-Qt Designer中控件的尺寸相关设置(sizePolicy策略)
虫无涯
2023/10/09
3K0
推荐阅读
相关推荐
【Python篇】PyQt5 超详细教程——由入门到精通(终篇)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验