PyQt6/PySide6 的 QMainWindow 类

QMainWindow 是 PyQt6 或 PySide6 库中一个非常重要的类,它提供了一个主窗口应用程序的框架,该框架可以包含菜单栏、工具栏、状态栏以及中心部件等。QMainWindow 为 GUI 应用程序提供了基本的结构和布局管理功能,非常适合用来创建复杂的用户界面。下面我将详细介绍 QMainWindow 的主要特性及其使用方法。

1. 基本概念

  • 主窗口:作为整个应用的主要窗口,通常包含了其他所有组件。
  • 中心部件(Central Widget):这是放置在主窗口中央的主要内容区域,只能设置一个中心部件。
  • 菜单栏(Menu Bar):位于窗口顶部,用于组织命令选项。
  • 工具栏(Toolbars):一般位于窗口顶部或侧面,快速访问常用功能。
  • 状态栏(Status Bar):通常位于窗口底部,显示临时消息如操作提示等信息。
  • 停靠部件(Dock Widgets):可移动的浮动窗口,允许用户自定义其位置。

2. 创建 QMainWindow 实例

要使用 QMainWindow,首先需要导入相应的库:

from PyQt6.QtWidgets import QApplication, QMainWindow
# 或者
from PySide6.QtWidgets import QApplication, QMainWindow

接着创建一个继承自 QMainWindow 的子类,并实现构造函数来初始化窗口:

class MyMainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("我的应用程序")# 设置窗口大小self.setGeometry(100, 100, 800, 600)# 初始化UIself.initUI()def initUI(self):# 在这里添加你的控件和其他UI元素pass

3. 添加中心部件

可以通过 setCentralWidget() 方法设置主窗口中的中心部件。例如,如果你想把一个标签作为中心部件:

from PyQt6.QtWidgets import QLabeldef initUI(self):label = QLabel("欢迎使用!")self.setCentralWidget(label)

4. 创建菜单栏

通过 menuBar() 方法获取菜单栏对象,然后添加菜单项:

from PyQt6.QtWidgets import QAction, QMenudef initUI(self):menubar = self.menuBar()file_menu = menubar.addMenu('文件')new_action = QAction('新建', self)open_action = QAction('打开', self)file_menu.addAction(new_action)file_menu.addAction(open_action)

5. 添加工具栏

使用 addToolBar() 可以很容易地向主窗口添加工具条:

def initUI(self):toolbar = self.addToolBar('工具栏')new_action = QAction('新建', self)open_action = QAction('打开', self)toolbar.addAction(new_action)toolbar.addAction(open_action)

6. 显示状态栏

状态栏可以通过 statusBar() 方法获得,并且可以直接调用 showMessage() 来显示文本信息:

def initUI(self):status_bar = self.statusBar()status_bar.showMessage('准备就绪')

7. 使用停靠部件

停靠部件是一种特殊的窗口,它可以被拖动到不同的位置或者从主窗口分离出来。创建时需指定标题和初始位置:

from PyQt6.QtWidgets import QTextEdit, QDockWidgetdef initUI(self):dock_widget = QDockWidget('笔记', self)text_edit = QTextEdit()dock_widget.setWidget(text_edit)self.addDockWidget(Qt.LeftDockWidgetArea, dock_widget)

以上就是关于 QMainWindow 类的一些基本介绍及如何在 PyQt6/PySide6 中使用它的示例。根据具体需求,你可以进一步探索更多高级功能,比如事件处理、信号与槽机制等。希望这能帮助你更好地理解和运用 QMainWindow!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9. k8s二进制集群之kube-controller-manager部署

同样在部署主机上创建证书请求文件(为之后的证书生成做准备)根据上面的证书文件创建证书(结果会在当前目录下产生kube-controller-manager证书)创建kube-controller-manager服务配置文件创建kube-controller-manager服务启动文件同步kube-controller-manager证书到对应mast…

教程 | i.MX RT1180 ECAT_digital_io DEMO 搭建(一)

本文介绍 i.MX RT1180 EtherCAT digital io DEMO 搭建,Master 使用 TwinCAT ,由于步骤较多,分为上下两篇,本文为第一篇,主要介绍使用 TwinCAT 控制前的一些准备。 原厂 SDK 提供了 evkmimxrt1180_ecat_examples_digit…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误,断网安装即可! 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本(如 Netplan 或传统的 ifupdown),配置方法有所不同。以下是基于 Netplan 的配置方法(适用于Ubuntu 17.10及更高版…

服务端渲染技术

一.JSP 1.jsp介绍,全称是java Server Pages ,java服务器页面,就是服务端渲染技术,html只能为用户提供静态数据,而JSP技术允许在页面中嵌套 java代码,jsp技术基于Servlet,Servlet很难对数据进行排版,而jsp就可以,可以理解为jsp就是对Servlet的包装. 2.jsp程序本质是java程序,无…

[23] cuda应用之 nppi 实现图像缩放

[23] cuda应用之 nppi 实现图像缩放 NPP(NVIDIA Performance Primitives)是一个由 NVIDIA 提供的库,专门用于加速图像和信号处理任务。NPP 提供了许多高效的图像处理函数,包括图像缩放。使用 NPP 实现图像缩放可以充分利用 GPU 的…

【产品经理学习案例——AI翻译棒出海业务】

前言: 本文主要讲述了硬件产品在出海过程中,翻译质量、翻译速度和本地化落地策略是硬件产品规划需要考虑的核心因素。针对不同国家,需要优化翻译质量和算法,关注市场需求和文化差异,以便更好地满足当地用户的需求。同…

CH340G上传程序到ESP8266-01(S)模块

文章目录 概要ESP8266模块外形尺寸模块原理图模块引脚功能 CH340G模块外形及其引脚模块引脚功能USB TO TTL引脚 程序上传接线Arduino IDE 安装ESP8266开发板Arduino IDE 开发板上传失败上传成功 正常工作 概要 使用USB TO TTL(CH340G)将Arduino将程序上传…

1.4 Go 数组

一、数组 1、简介 数组是切片的基础 数组是一个固定长度、由相同类型元素组成的集合。在 Go 语言中,数组的长度是类型的一部分,因此 [5]int 和 [10]int 是两种不同的类型。数组的大小在声明时确定,且不可更改。 简单来说,数组…

AI推理性能之王-Groq公司开发的LPU芯片

Groq公司开发的LPU(Language Processing Unit,语言处理单元)芯片是一种专为加速大规模语言模型(LLM)和其他自然语言处理任务而设计的新型AI处理器。以下是对其技术特点、性能优势及市场影响的深度介绍: 技…

C#中的委托(Delegate)

什么是委托? 首先,我们要知道C#是一种强类型的编程语言,强类型的编程语言的特性,是所有的东西都是特定的类型 委托是一种存储函数的引用类型,就像我们定义的一个 string str 一样,这个 str 变量就是 string 类型. 因为C#中没有函数类型,但是可以定义一个委托类型,把这个函数…

rk3506 sd卡启动

1 修改系统配置文件,打开ext4 #SDMMC RK_ROOTFS_TYPE"ext4" RK_ROOTFS_INSTALL_MODULESy RK_WIFIBT_CHIP"AIC8800" # RK_ROOTFS_LOG_GUARDIAN is not set RK_UBOOT_CFG_FRAGMENTS"rk3506_tb" RK_UBOOT_SPLy RK_KERNEL_CFG"rk3506_defconfi…

2025春招,深度思考MyBatis面试题

大家好,我是V哥,2025年的春招马上就是到来,正在准备求职的朋友过完年,也该收收心,好好思考一下自己哪些技术点还需要补一补了,今天 V 哥要跟大家聊的是MyBatis框架的问题,站在一个高级程序员的角…

Docker 安装详细教程(适用于CentOS 7 系统)

目录 步骤如下: 1. 卸载旧版 Docker 2. 配置 Docker 的 YUM 仓库 3. 安装 Docker 4. 启动 Docker 并验证安装 5. 配置 Docker 镜像加速 总结 前言 Docker 分为 CE 和 EE 两大版本。CE即社区版(免费,支持周期7个月)&#xf…

AWS门店人流量数据分析项目的设计与实现

这是一个AWS的数据分析项目,关于快消公司门店手机各个门店进店人流量和各个产品柜台前逗留时间(利用IoT设备采集)和销售数据之间的统计分析,必须用到但不限于Amazon Kensis Data Stream,Spark Streaming,Sp…

【玩转 Postman 接口测试与开发2_017】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(下)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证8 导入官方契约测试集合9 契约测试集合的详细配置9.1 env-apiKey 的创建与设置9.2 env-workspaceId 的设置9.3 Mock 服务器及 env-server 的配置9.4 API 测试实例的配置…

使用DeepSeek R1 + 了解部署

官网注册 R1模型,推理模型 参考视频理解 理解大语言模型的本质 大模型在训练时是将内容token化的大模型知识是存在截止时间的大模型缺乏自我认知、自我意识记忆有限输出长度有限 智商理解,例如下面的DeepSeek的测试: 用DeepSeek 官网手…

2024年12月 Scratch 图形化(三级)真题解析 中国电子学会全国青少年软件编程等级考试

202412 Scratch 图形化(三级)真题解析 中国电子学会全国青少年软件编程等级考试 一、选择题(共18题,共50分) 第 1 题 气温和对应的穿衣建议如下表所示,下列选项能正确给出穿衣建议的是?( ) A. …

深度学习-100-RAG技术之最简单的RAG系统概念和效果优化提升方向

文章目录 1 数据是基础2 Naive RAG(最简单的RAG系统)2.1 RAG周边技术2.2 标准的RAG流程2.3 RAG的潜在问题2.4 如何应对RAG的问题3 优化方向3.1 原始数据创建/准备3.1.1 易于理解的文本3.1.2 提高数据质量3.2 预检索优化3.2.1 分块优化3.2.2 添加元数据3.2.3 选对嵌入模型3.2.4 …

Gauss高斯:建表语法,存储方式,OLTP和OLAP,系统时间,数组,分组(grouping set,rollup)

数据库和表的语法 数据库 表 oracle,高斯, hive的默认存储方式都是列式存储 存储方式 高斯数据库(GaussDB)支持列式存储和行式存储 OLTP 与 OLAP OLTP(联机事务处理,Online Transaction Processing)是一种用于管理…

数据中心服务器对PCIe测试的需求、挑战和应用

人工智能和机器学习技术的迅猛发展,尤其是大语言模型(LLM)的兴起,对计算资源和数据传输速度提出了更高的要求,从而激发了对更高带宽解决方案的迫切需求。PCIe作为数据中心服务器间互联的主力军,承担着高速数…