快速掌握Pyqt5的5种布局

在PyQt5中,布局管理器是用来控制窗口中控件(widgets)的位置和大小的。使用布局管理器而不是手动定位控件可以让界面自动适应不同的窗口大小和显示设置。PyQt5提供了多种布局管理器来满足不同的布局需求。

1. 水平布局(QHBoxLayout)

QHBoxLayout 排列控件在水平方向上。控件按添加的顺序从左到右排列。

from PyQt5.QtWidgets import QWidget, QHBoxLayout, QPushButtonwidget = QWidget()
hbox = QHBoxLayout()hbox.addWidget(QPushButton('Button 1'))
hbox.addWidget(QPushButton('Button 2'))
hbox.addWidget(QPushButton('Button 3'))widget.setLayout(hbox)
widget.show()

2. 垂直布局(QVBoxLayout)

QVBoxLayout 在垂直方向上排列控件。控件按添加的顺序从上到下排列。

from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButtonwidget = QWidget()
vbox = QVBoxLayout()vbox.addWidget(QPushButton('Button 1'))
vbox.addWidget(QPushButton('Button 2'))
vbox.addWidget(QPushButton('Button 3'))widget.setLayout(vbox)
widget.show()

3. 网格布局(QGridLayout)

QGridLayout 允许你以网格方式排列控件。你可以指定控件的行和列。

from PyQt5.QtWidgets import QWidget, QGridLayout, QPushButtonwidget = QWidget()
grid = QGridLayout()grid.addWidget(QPushButton('Button 1'), 0, 0)
grid.addWidget(QPushButton('Button 2'), 0, 1)
grid.addWidget(QPushButton('Button 3'), 1, 0)
grid.addWidget(QPushButton('Button 4'), 1, 1)widget.setLayout(grid)
widget.show()

4. 表单布局(QFormLayout)

QFormLayout 是为表单设计的,它以两列方式排列控件:左列是标签,右列是对应的字段(如文本框)。

from PyQt5.QtWidgets import QWidget, QFormLayout, QLineEdit, QLabelwidget = QWidget()
form = QFormLayout()form.addRow(QLabel('Name:'), QLineEdit())
form.addRow(QLabel('Age:'), QLineEdit())
form.addRow(QLabel('Job:'), QLineEdit())widget.setLayout(form)
widget.show()

5. 堆叠布局(QStackedLayout)

QStackedLayout 允许你堆叠多个控件在同一个位置,然后选择一个控件进行显示。

from PyQt5.QtWidgets import QWidget, QStackedLayout, QPushButtonwidget = QWidget()
stack = QStackedLayout()stack.addWidget(QPushButton('Button 1'))
stack.addWidget(QPushButton('Button 2'))
stack.addWidget(QPushButton('Button 3'))# 设置当前显示的控件索引
stack.setCurrentIndex(1)widget.setLayout(stack)
widget.show()

6. 自定义布局

可以通过继承 QLayout 类来创建自定义布局管理器,为特定的布局需求提供解决方案。

使用布局管理器的优点

  • 自动调整:当窗口大小改变时,布局管理器会自动调整控件的大小和位置。
  • 国际化:布局管理器会考虑不同语言的文本长度变化。
  • 容易修改:使用布局管理器可以让你在不改变布局逻辑的情况下添加、移除或重新排列控件。

正确使用布局管理器是创建专业和易用GUI的关键。布局管理器的选择取决于你的具体需求和期望的界面布局。

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

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

相关文章

postman和Jmeter做接口测试的区别(经验之谈)

接口测试的目的 API 测试作为集成测试的一部分,经过被测应用的接口(API)来确定是否在功能、可靠性、性能和安全方面达到预期的软件测试。因为 API 都没有 GUI 界面,API 测试都是在通信层进行的。 1.建立接口用例集 Postman功能…

第十八章 解读pytorch优化器与学习率设置(工具)

简介与解读基本概念 学习率对于模型训练效果来说相当重要。 学习率过低会导致学习速度太慢,学习率过高又容易导致难以收敛。 因此,很多炼丹师都会采用动态调整学习率的方法。刚开始训练时,学习率大一点,以加快学习速度&#xf…

2016年11月10日 Go生态洞察:七年的Go语言旅程

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

面试必问:如何快速定位BUG?BUG定位技巧及N板斧!

01 定位问题的重要性 很多测试人员可能会说,我的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事? 好,我的回答是,如果您只想做一个测试人员最基本最本分的事情,那么可…

大数据-之LibrA数据库系统告警处理(ALM-37005 GTM进程异常)

告警解释 当出现如下情况时,产生该告警: GTM实例数据目录中的gtm.conf配置文件不存在或者其中某个配置参数不正确时。GTM实例服务线程无法监听IP,或者无法绑定监听端口。GTM实例进程没有其数据目录读写权限时。 告警属性 告警ID 告警级别…

如何取消thunar为默认文件管理器

apt-get install thunark安装之后,导致其他软件(例如vscode)里文件右键"打开所在的文件夹"时,会默认使用thunar,如何恢复系统默认的Nautilus: 参考1 exo-preferred-applications进入Utilities选…

FPGA模块——SPI协议(读写FLASH)

FPGA模块——SPI协议(读写FLASH) (1)FLASH芯片 W25Q16BV(2)SPI协议(3)芯片部分命令1.Write Enable(06h)2.Chip Erase (C7h / 60h)3.写指令(02h&am…

3.前端--HTML标签2【2023.11.25】

1.HTML常用标签(文本图像链接&#xff09; 文本标签 标题 <h1> - <h6> 段落<p> 我是一个段落标签 </p> 换行 <br /> <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta ht…

js无法请求后端接口,别的都可以?

在每个接口的控制器中加入以下代码即可&#xff1a; header(Access-Control-Allow-Methods:*); header("Access-Control-Allow-Origin:*"); 如果嫌麻烦可以添加在api初始函数里面

全面(16万字)深入探索深度学习:基础原理到经典模型网络的全面解析

前言 Stacking(堆叠) 网页调试 学习率&#xff1a;它决定了模型在每一次迭代中更新参数的幅度激活函数-更加详细 激活函数的意义: 激活函数主要是让模型具有非线性数据拟合的能力&#xff0c;也就是能够对非线性数据进行分割/建模 如果没有激活函数&#xff1a; 第一个隐层: l…

jpom学习

jpom学习 整理jpom 一键安装 部署会需要 mvn跟jdk环境 # 安装服务端和 jdk、maven 环境 yum install -y wget && \ wget -O install.sh https://jpom.top/docs/install.sh && \ bash install.sh Server jdkmvndocker安装 安装docker挂载方式安装 docker …

2023.11.23 云服务器实现 Spring Boot 项目文件上传并访问

环境介绍 云服务器&#xff1a;京东云云服务器系统&#xff1a; CentOS 7.9JDK 版本&#xff1a;1.8Spring Boot 版本&#xff1a;2.7.17 具体步骤 步骤一 首先我们得先创建一个 Spring Boot 项目 创建如下目录结构 关于如何创建一个 Spring Boot 项目 请点击下方链接详细了解 …

【华为OD】B\C卷真题 100%通过:字符串统计 C/C++实现

目录 题目描述&#xff1a; 示例1 代码实现&#xff1a; 【华为OD】B\C卷真题 100%通过:字符串统计 C/C实现 题目描述&#xff1a; 给定两个字符集合&#xff0c;一个为全量字符集&#xff0c;一个为已占用字符集。已占用的字符集中的字符不能再使用&#xff0c;要求输出剩…

【Linux】驱动程序同步和异步通知方式

一、应用程序APP&#xff0c;访问驱动程序/dev/input/enent1流程&#xff1a; 假设用户程序直接访问 /dev/input/event0 设备节点&#xff0c;或者使用 tslib 访问设备节点&#xff0c;数据的流程如下&#xff1a; APP 发起读操作&#xff0c;若无数据则休眠&#xff1b;用户操…

【Linux】 sudo命令使用

sudo sudo是linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具&#xff0c;如halt&#xff0c;reboot&#xff0c;su等等。这样不仅减少了root用户的登录 和管理时间&#xff0c;同样也提高了安全性。sudo不是对shell的一个代替…

AVD黑屏

启动android studio的AVD后&#xff0c;无法开启&#xff0c;一直处于黑屏状态 【解决方案】 1.点击 Android Virtual Device Manager中avd后面的编辑按钮 2.点击Show Advanced Settings按钮 3.找到Boot option中的Cold boot并选中 4.重启AVD

面向电力系统的多路实时数据采集通道设计

摘 要 随着电力系及其他领域科学技术地不断发展与目前人们对于电力能源的需求不断提高&#xff0c;我国对电力系统及相关行业投资逐年上升&#xff0c;电网装机容量得到提升&#xff0c;加快了电网全国互联建设。但随着电力电子技术的发展&#xff0c;电网中投入的非线性负载愈…

【nacos】配置使用

nacos配置 遇见的问题 代码启动成功&#xff0c;但是配置文件未生效 观察报错 无报错&#xff0c;也看到了加载的配置文件路径&#xff0c;但是配置未生效 [main] [TID: N/A] c.a.c.n.refresh.NacosContextRefresher : [Nacos Config] Listening config: dataIda-servi…

leetcode刷题:17.电话号码的字母组合

leetcode原题网页 题目描述&#xff1a;给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 思路&#xff1a;使用vector&#x…

P12 C++静态关键字static

目录 01 前言 02 静态变量static 03 extern关键字 04 静态函数 最后的话 01 前言 static 关键字在 C 中有两个意思&#xff0c;这个取决于上下文。 第一种情况是在类或结构体外部使用 static 关键字&#xff0c;另一种是在类或者结构体内部使用 static。 类外面的 static…