Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)

简介: Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)

目录

1、Qt Designer调整组件布局比例


2、addStretch()函数调整组件布局比例


在一个布局容器中,有时可能需要调整各组件的显示比例,让界面达到更美观效果。


调整组件布局比例有两种办法:第一种是通过Qt Designer调整,另一种是使用addStretch()函数代码调整。


下面让我们来看看吧~


1、Qt Designer调整组件布局比例

在Qt Designer中放置Frame容器,容器中添加3个按钮组件,并进行水平布局设置。


image.png


此时可以在layoutStretch属性中设置组件布局比例。


image.png


例如,设置三个按钮组件比例是:3:1:1,此时效果如下所示:


image.png


分隔组件在GUI显示时是看不出来的,可以通过添加分隔组件(Horizontal Spacer(水平分隔)、Vertical  Spacer(垂直分隔))进行比例调整。


image.png


2、addStretch()函数调整组件布局比例

addStretch()函数可以在设置stretch伸缩量后,按比例分配剩余空间。addStretch()函数的具体使用请参考下表:


image.png


例如,一个布局管理器中有三个按钮控件,要求界面不随着父控件的伸缩而改变。代码实现如下所示:


from PyQt5.QtWidgets import QApplication ,QWidget, QVBoxLayout , QHBoxLayout  ,QPushButton
import sys  
class WindowDemo(QWidget):  
    def __init__(self ):  
        super().__init__()
        btn1 = QPushButton(self)
        btn2 = QPushButton(self)
        btn3 = QPushButton(self)      
        btn1.setText('button 1')
        btn2.setText('button 2')
        btn3.setText('button 3')
        hbox = QHBoxLayout()
        # 设置伸缩量为1
        hbox.addStretch(1)
        hbox.addWidget( btn1 )
        # 设置伸缩量为1
        hbox.addStretch(1)
        hbox.addWidget( btn2 )
        # 设置伸缩量为1
        hbox.addStretch(1)
        hbox.addWidget( btn3 )
        # 设置伸缩量为1
        hbox.addStretch(1 )        
        self.setLayout(hbox)
        self.setWindowTitle("addStretch 例子")
if __name__ == "__main__":  
    app = QApplication(sys.argv)  
    win = WindowDemo()  
    win.show()  
    sys.exit(app.exec_())

运行效果如下所示:


image.png


可见,四个addStretch()函数用于在按钮间设置伸缩量,伸缩量的比例为1:1:1:1,意思是将按钮以外的空白地方等分为4份,并按照所设置的顺序放入按钮的布局管理器中。这样在每一个控件之间就都添加了伸缩量,所有控件之间的间距都会相同。


若在布局中使用addStretch()函数时候,在第一个控件之前添加伸缩控件,这样所有的控件就都会居右显示。代码实现如下所示:


import sys
from PyQt5.QtWidgets import QApplication  ,QWidget ,QHBoxLayout , QPushButton
class Winform(QWidget):
  def __init__(self,parent=None):
  super(Winform,self).__init__(parent)
  self.setWindowTitle("水平布局管理例子") 
  self.resize(800, 50)
  # 水平布局按照从左到右的顺序进行添加按钮部件。
  hlayout = QHBoxLayout()  
        # 添加伸缩  
  hlayout.addStretch(0)
  hlayout.addWidget( QPushButton(str(1)) )
  hlayout.addWidget( QPushButton(str(2)) )
  hlayout.addWidget( QPushButton(str(3)))
  hlayout.addWidget( QPushButton(str(4)) )        
  hlayout.addWidget( QPushButton(str(5)) )    
        # 添加伸缩  
  #hlayout.addStretch(1)
  self.setLayout(hlayout)   
if __name__ == "__main__":  
  app = QApplication(sys.argv) 
  form = Winform()
  form.show()
  sys.exit(app.exec_())

运行效果如下所示:


image.png


同样道理,在最后一个控件之后添加伸缩控件,这样所有的控件就都会居左显示。


相关文章
|
1月前
|
测试技术 开发者 Python
Python(GUI)之活动积分记录表
本文介绍了一套使用Python的Tkinter库构建的学生活动积分记录系统。该系统允许教师选择班级和学生,输入加分分数及原因,并将数据保存至文件,旨在简化学生积分管理流程,提升教学效率。
48 6
|
4月前
【qt】 QGridLayout布局管理器怎么用?
【qt】 QGridLayout布局管理器怎么用?
179 0
|
1月前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
124 7
|
2月前
|
Linux Android开发 开发者
【Python】GUI:Kivy库环境安装与示例
这篇文章介绍了 Kivy 库的安装与使用示例。Kivy 是一个开源的 Python 库,支持多平台开发,适用于多点触控应用。文章详细说明了 Kivy 的主要特点、环境安装方法,并提供了两个示例:一个简单的 Hello World 应用和一个 BMI 计算器界面。
81 0
|
2月前
|
机器学习/深度学习 算法框架/工具 Python
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
108 0
|
4月前
|
算法 Unix 程序员
[oeasy]python031_[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics
回顾了上次内容关于调试的基本概念后,本文介绍了Unix操作系统的起源。从早期计算机任务的独占执行方式讲起,到1960年代 Dartmouth 开发出分时算法,使得一台主机能够面对多个终端,轮流使用CPU时间片。随后,贝尔实验室、通用电气和MIT合作开展Multics项目,项目成员Kenneth Thompson与Dennis Ritchie在此期间开发了一款名为《Space Travel》的游戏。然而,因金融动荡等原因,Multics项目最终被裁撤。Thompson和Ritchie后来利用实验室闲置的一台PDP-7计算机仅用三周时间就开发出了Unix操作系统的第一版,初衷是为了能够继续玩游戏。
48 3
|
4月前
|
前端开发 JavaScript 测试技术
Python中的GUI测试
【8月更文挑战第15天】本文探讨了Python中图形用户界面(GUI)测试的关键工具——Selenium与PyQt。Selenium专为Web应用测试设计,能模拟用户行为如点击和输入文本。PyQt则基于Qt框架,用于构建丰富的桌面应用程序及编写自动化测试脚本。
|
4月前
|
存储 数据库连接 数据库
【Python】python员工信息管理系统(数据库版本)(GUI界面+数据库文件+源码)【独一无二】
【Python】python员工信息管理系统(数据库版本)(GUI界面+数据库文件+源码)【独一无二】
427 1
|
4月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
202 2