当前位置: 首页 > news >正文

不懂PyQt5垂直布局?只需3分钟即可学会

PyQt5中实现垂直布局,主要使用QVBoxLayout类。该布局管理器将子控件垂直排列,并可以根据需要自动调整大小。使用QVBoxLayout可以方便地构建从上到下排列的界面元素。

import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QPushButtonclass myWindow(QWidget):  # 相当于self == w=QWidget()def __init__(self):super().__init__()self.resize(400, 200)self.setWindowTitle('垂直布局')# 创建一个垂直布局layout = QVBoxLayout()# 第一个伸缩空间,伸缩因子为1layout.addStretch(1)# 添加第一个按钮btn1 = QPushButton("按钮1")layout.addWidget(btn1)# 第二个伸缩空间,伸缩因子为1layout.addStretch(1)# 添加第二个按钮btn2 = QPushButton("按钮2")layout.addWidget(btn2)# 第三个伸缩空间,伸缩因子为1layout.addStretch(1)# 添加第三个按钮btn3 = QPushButton("按钮3")layout.addWidget(btn3)# 第四个伸缩空间,伸缩因子为2layout.addStretch(2)# 添加第四个按钮btn4 = QPushButton("按钮4")layout.addWidget(btn4)# 第五个伸缩空间,伸缩因子为2layout.addStretch(2)# 将布局设置给当前QWidget(假设这段代码在QWidget的子类中)self.setLayout(layout)if __name__ == '__main__':app = QApplication(sys.argv)window = myWindow()window.show()app.exec()pass

伸缩因子的作用

  • 伸缩因子(stretch factor)决定了当布局有多余空间时,各个伸缩空间应该如何分配这些空间。在您的代码中,addStretch方法的参数(即伸缩因子)被设置为1或2。
  • 当窗口大小改变时,布局管理器会根据伸缩因子的比例来分配额外的空间。例如,如果您在btn3btn4之间的伸缩空间(伸缩因子为2)和在其他地方的伸缩空间(伸缩因子为1)之间有多余空间,那么btn3btn4之间的空间将是其他伸缩空间的两倍大。
  • 但是,需要注意的是,如果窗口的大小刚好足够容纳所有小部件而不留有多余空间,那么伸缩空间实际上就不会有任何效果,因为没有空间可以分配

 ​​​​​​​

http://www.lryc.cn/news/389855.html

相关文章:

  • 从零开始实现大语言模型(二):文本数据处理
  • 生物分子生物学实验过程的自动化与智能监控系统设计
  • linux的shell脚本编程详解
  • Redis 7.x 系列【11】数据类型之位图(Bitmap)
  • 如何评定旅游卡的品质与服务?
  • 适合学生暑假适用的护眼大路灯有哪些?五款好用护眼灯分享!
  • linux服务器 部署jenkins
  • 电商控价:系统监测的必要性与优势
  • 港股下半年能恢复上涨趋势吗?
  • 软件测试项目实战:银行贷款业务测试介绍-2
  • 如何将Hive表的分区字段插入PG表对应的时间戳字段?
  • Spring Boot与MyBatis的集成应用
  • 在昇腾服务器上使用llama-factory对baichuan2-13b模型进行lora微调
  • Kafka 管理TCP连接
  • electron教程(一)创建项目
  • 如何在Oracle、MySQL、PostgreSQL上终止会话或取消SQL查询
  • 3、FTL基本工作过程
  • 微信小程序的跳转页面
  • 深入理解 Java 中的线程间通信:`wait()`, `notify()`, `notifyAll()`
  • 23种设计模式【创建型模式】详细介绍之【单例模式】
  • 某汽车配件制造公司任职资格体系项目成功案例纪实
  • 【Linux】生物信息学常用基本命令
  • React Native V0.74 — 稳定版已发布
  • Python面试宝典第4题:环形链表
  • Kubernetes (K8s) 底层原理
  • 解析Kotlin中的委托(包括类委托,属性委托)【笔记摘要】
  • vue3+ts+uniapp+vite+pinia项目配置
  • 大数据开发语言 Scala(四):面向对象编程
  • C++ //练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数,为什么?
  • 通配符和正则表达式之间的关系