简述PyQt5布局管理

PyQt5的布局管理方法主要包括以下几种:

  • 水平布局(QHBoxLayout):可以将所添加的控件在水平方向上依次排列。
  • 垂直布局(QVBoxLayout):可以将所添加的空间在垂直方向上依次排列。
  • 网格布局(QGridLayout):可以将所添加的空间以网络的形式排列。
  • 表单布局(QFormLayout):可以将所添加的空间以两列的形式排列。
  • 绝对位置布局:主要是通过在窗口程序中指定每一个空间的显示坐标和大小来实现的。
  • addLayout():用于在布局中插入子布局。
  • addWidget():用于在布局中插入控件。

布局管理器(layout)

PyQt5的布局管理主要是通过使用布局管理器(layout)来实现的。
布局管理器是一种用于自动排列窗口中的界面组件的机制,能够根据窗口大小的变化自动更新界面组件的大小。
在PyQt5中,常见的布局管理器包括水平布局(QHBoxLayout)、垂直布局(QVBoxLayout)、网格布局(QGridLayout)和表单布局(QFormLayout)。

水平布局管理器(QHBoxLayout)

水平布局管理器可以将所添加的控件在水平方向上依次排列。示例代码如下:

from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLineEdit, QPushButton

app = QApplication([])
window = QWidget()
hbox = QHBoxLayout()
cb2 = QLineEdit()
cb2.setFixedWidth(257)
cb3 = Button() // 重写QPushButton方法
cb3.setFixedSize(23, 13)
cb3.setStyleSheet('border-image: url("Mesh/file.png"); margin-right: 6px;')
cb3.clicked.connect(lambda:self.select_file(cb, cb2))
hbox.addWidget(cb2)
hbox.addWidget(cb3)
window.setLayout(hbox)
window.show()
app.exec_()

效果如图:
QHBoxLayout
以上代码实现了在一个输入框中放入一个按钮,因此用到了水平布局。

垂直布局管理器(QVBoxLayout)

垂直布局管理器可以将所添加的空间在垂直方向上依次排列。示例代码如下:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QLabel

app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
tetra = Label('▼Tetra/mixed', 'bgplain', False) // 重写QLabel方法
meshmethod = QLineEdit('Mesh Method')
layout.addWidget(tetra)
layout.addWidget(meshmethod)
window.setLayout(layout)
window.show()
app.exec_()

效果如图:
QVBoxLayout

网格布局管理器(QGridLayout)

网格布局管理可以将所添加的空间以网格的形式排列。示例代码如下:

from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton

app = QApplication([])
window = QWidget()
layout = QGridLayout()
button1 = QPushButton('Button 1')
button2 = QPushButton('Button 2')
layout.addWidget(button1, 0, 0)
layout.addWidget(button2, 1, 0)
window.setLayout(layout)
window.show()
app.exec_()

表单布局管理器(QFormLayout)

表单布局管理器可以将所添加的空间以两列的形式排列。示例代码如下:

from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QLineEdit, QLabel

app = QApplication([])
window = QWidget()
fill = QFormLayout()
label1 = Label('Viscosity') // 重写QLabel方法
label2 = Label('Density')
line1 = LineEdit('WaterViscosity')
line2 = LineEdit('WaterDensity')
fill.addRow(label1, line1)
fill.addRow(label2, line2)
window.setLayout(fill)
window.show()
app.exec_()

效果如图:
QFormLayout

布局调整

在PyQt5中,addSpacingaddStretch 都是用于调整控件布局的函数。

  • addSpacing 方法用于在布局中添加一个具有指定像素值的空白区域。这个方法接受一个参数,即空白区域的像素值。通过添加空白区域,可以调整控件之间的间距,使布局更加美观。

下面是一个使用 addSpacing 方法的示例代码:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout

app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
button1 = QPushButton('Button 1')
button2 = QPushButton('Button 2')
layout.addWidget(button1)
layout.addWidget(button2)
layout.addSpacing(10)# 在两个按钮之间添加10像素的空白区域
window.setLayout(layout)
window.show()
app.exec_()

在上面的示例中,通过调用 addSpacing 方法,在两个按钮之间添加了一个10像素的空白区域,使布局更加清晰可读。

  • addStretch 方法用于在布局中添加一个可拉伸的空白区域。这个方法不接受任何参数,它会根据窗口的大小自动拉伸或缩小,以填充布局中的可用空间。通过添加可拉伸的空白区域,可以调整控件之间的填充效果,使布局更加灵活。

下面是一个使用 addStretch 方法的示例代码:

from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayout

app = QApplication([])
window = QWidget()
layout = QHBoxLayout()
label = Label('Temperature effect')
cb = QCheckBox()
cb.setStyleSheet('border: none;')
layout.addWidget(label)
layout.addStretch(1) # 在两个控件之间添加一个可拉伸的空白区域
layout.addWidget(cb)

window.setLayout(layout)
window.show()
app.exec_()

效果如图:
addStretch
在上面的示例中,通过调用 addStretch 方法,在两个控件之间添加了一个可拉伸的空白区域,当窗口大小变化时,这个区域会自动拉伸或缩小,以填充可用空间。
同时也是相当于是实现了水平两端对齐 (QtCore.Qt.AlignJustify)。可以利用 addStretch 实现各种布局对齐方式:

参数描述
QtCore.Qt.AlignLeft水平方向居左对齐
QtCore.Qt.AlignRight水平方向居右对齐
QtCore.Qt.AlignCenter水平方向居中对齐
QtCore.Qt.AlignJustify水平方向两端对齐
QtCore.Qt.AlignTop垂直方向靠上对齐
QtCore.Qt.AlignBottom垂直方向靠下对齐
QtCore.Qt.AlignVCenter垂直方向居中对齐

布局管理方法

在上面的示例代码中,用到了 addLayoutaddWidget

在PyQt5中,addLayoutaddWidget 是两个非常重要的布局管理方法,它们分别用于在布局中插入子布局和在布局中插入控件。

  • addLayout 方法用于将一个布局添加到另一个布局中,它通常用于实现更复杂的布局管理。例如,你可以使用 addLayout 方法将一个水平布局添加到一个垂直布局中,或者将一个网格布局添加到一个表单布局中。
  • addWidget 方法用于将一个控件添加到布局中,它比addLayout方法更简单。例如,你可以使用 addWidget 方法将一个按钮添加到一个水平布局中,或者将一个文本框添加到一个表单布局中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web3 dapp React项目引入 antd 对 balance 用户token信息组件进行样式改造

好 上文 web3 React dapp中编写balance组件从redux取出并展示用户资产 我们简单处理了用户资产的展示 那么 我们继续 先启动 ganache 环境 终端输入 ganache -d然后 打开我们的项目 将合约发布到区块链上 truffle migrate --reset然后 我们启动项目 确认一切正常 还原到上文…

day2 ARM基础

.text .globl _start _start:mov r0,#0 mov r1,#0 addfunc:add r0,r0,#1 r0自增1adds r1,r1,r0 R1实现1~100累加cmp r0,#100 判断r0是否到100bleq loop r0等于100 进入死循环 blne addfunc r0等于100跳转至循环累加 loop:b loopstop:b stop.end 【汇编…

淘宝婴儿用品购买情况分析报告

一.分析背景和目的 随着购物网站的发展,人们的网络购物行为占比也快速增加。为了能够获取更多的用户,提升商家的销售量,需要从产品和用户不同的角度进行分析,进而得到有价值的信息,指导商家进行获客和营销。本文就以淘…

NOIP2023模拟12联测33 D. 滈葕

NOIP2023模拟12联测33 D. 滈葕 文章目录 NOIP2023模拟12联测33 D. 滈葕题目大意思路code 题目大意 思路 放一段题解的材料 ABO 血型系统是血型系统的一种,把血液分为 A,B,AB,O 四种血型。血液由红细胞和血清等组成,红细胞表面 有凝集原,血清…

R语言环境下使用curl库做的爬虫代码示例

curl库是一个用于传输数据的工具和库,它支持多种协议,包括HTTP、FTP、SMTP等。在爬虫中,curl库可以用来获取网页内容,从而实现爬取网页的功能。通过设置curl的选项,可以实现对网页的请求、响应、重定向等操作。在使用c…

学习笔记三十三:准入控制

ResourceQuota准入控制器 ResourceQuota准入控制器限制cpu、内存、pod、deployment数量限制存储空间大小 LimitRanger准入控制器在limit名称空间创建pod,不指定资源,看看是否会被limitrange规则自动附加其资源限制创建pod,指定cpu请求是100m&…

django安装数据库

使用pip安装django pip3 install django注意我使用的是python3所以用pip3安装,如需安装指定版本 django ..* 检测是否安装成功,不报错,则安装成功 # python3 # import django下边这是报错的 django迁移数据库 再mysql中简历数据库 CREATE DATABA…

【系统集成项目管理工程师】——3.管理

主要掌握输入,输出内容先看他的过程域本身,过程域是什么输出就是什么 上一个过程域的输出是下一个过程域的输入 十大管理1432都有计划过程组,通常规划为首,控制为尾 规划阶段的万能输出是各子计划,即项目管理计划的…

加法运算、 || 、 赋值运算

一、加法运算 在这里插入图片描述 二、&& || 三、赋值运算 四、js类型就八种: 五、css权重、 六:布局,尽量使用块盒。 七、小数精度存储的问题:存的不精确,算的肯定也是有问题的。 八、找单身狗算法题…

20.7 OpenSSL 套接字SSL加密传输

OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,…

预处理、编译、汇编、链接

1.预处理 宏替换去注释引入头文件 #之后的语句都是预处理语句&#xff0c; #include<iostream> 将该文件的内容拷贝到现有文件中&#xff0c; 2.编译 3.汇编 4.链接 gcc 基于C/C的编译器 补充说明 gcc命令 使用GNU推出的基于C/C的编译器&#xff0c;是开放源代…

接口自动化测试分层设计与实践总结01

本文以笔者当前使用的自动化测试项目为例&#xff0c;浅谈分层设计的思路&#xff0c;不涉及到具体的代码细节和某个框架的实现原理&#xff0c;重点关注在分层前后的使用对比&#xff0c;可能会以一些伪代码为例来说明举例。 接口测试三要素&#xff1a; 参数构造 发起请求&…

5个高质量图片处理软件,抠图、特效不求人!

作为一个设计师或摄影家或者平面设计工作人员&#xff0c;又或者是普通人&#xff0c;只要你有图片处理的需求&#xff0c;就不可避免的会需要一个好用高效的图片处理网站&#xff0c;会抠素材&#xff0c;找图片&#xff0c;删除图片内容等等&#xff0c;都需要花费大量的时间…

软件开发必备神器!一文读懂10款热门看板工具推荐!

看板&#xff08;Kanban&#xff09;是一种流行的框架&#xff0c;用于实施敏捷和DevOps软件开发。它要求实时沟通每个人的能力&#xff0c;并全面透明地展示正在进行的工作。工作项目在看板上以可视化方式表示&#xff0c;使项目经理和所有团队成员可以随时查看每个工作的状态…

下载安装各种版本的Vscode以及解决VScode官网下载慢的问题

下载指定版本 在Vscode官网 Vscode官网更新子页 这里的左侧栏点击其中一个会跳转到某个版本&#xff0c;或者在官网子页 https://code.visualstudio.com/updates的后面跟上需要的版本号即可完成目标版本下载页面的跳转 选择Linux里的ARM包不会自动下载而是跳转到另一个页面 …

HTTP 协议详解-上(Fiddler 抓包演示)

文章目录 HTTP 协议HTTP 协议的工作过程HTTP 请求 (Request)认识URL关于 URL encode认识 "方法" (method)GET 方法POST 方法其他方法请求 "报头" (header)请求 "正文" (body) HTTP 响应详解状态码响应 "报头" (header) HTTP 协议 HTT…

MySQL第五讲·关于外键和连接, 如何做到关联查询?

你好&#xff0c;我是安然无虞。 文章目录 外键和连接&#xff1a;如何做关联查询&#xff1f;如何创建外键&#xff1f;连接关联查询中的误区 外键和连接&#xff1a;如何做关联查询&#xff1f; 在实际的数据库应用开发过程中&#xff0c;我们经常需要把2个或2个以上的表进…

在CentOS上安装SQL Server,并通过cpolar内网穿透实现数据库的公网访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具&#xff0…

【Redis】hash数据类型-常用命令

文章目录 前置知识常用命令HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGET关于HMSETHLENHSETNXHINCRBYHINCRBYFLOAT 命令小结 前置知识 redis自身就是键值对结构了&#xff0c;哈希类型是指值本⾝⼜是⼀个键值对结构&#xff0c;形如key"key"&#xff0c;value{{field1…

学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

DaemonSet控制器&#xff1a;概念、原理解读 DaemonSet概述DaemonSet工作原理&#xff1a;如何管理PodDaemonset典型的应用场景DaemonSet 与 Deployment 的区别DaemonSet资源清单文件编写技巧 DaemonSet使用案例&#xff1a;部署日志收集组件fluentdDaemonset管理pod&#xff1…