问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PyQt窗口布局

创作时间:
作者:
@小白创作中心

PyQt窗口布局

引用
CSDN
1.
https://blog.csdn.net/qq_55948984/article/details/140097983

在使用PyQt开发GUI应用程序时,QtDesigner无疑是一个强大且易用的工具。它能够帮助我们快速搭建出漂亮的用户界面,并且提供了各种布局管理器供我们选择。对于初学者来说,如何在QtDesigner中合理地安排窗口布局可能是个挑战。不同的布局管理器有各自的特点和适用场景,我们需要了解它们的使用方法,才能设计出功能完备、美观大方的GUI界面。

在本篇博客中,我将详细介绍PyQt中QtDesigner的窗口布局技巧。从最基本的布局管理器使用,到灵活调整控件几何属性,我希望能够为您的界面设计提供有价值的参考和建议。让我们一起探讨如何在QtDesigner中实现出色的GUI布局吧。

一、简介

Qt Designer提供了可视化的界面编辑功能,大大简化了布局管理的复杂性。开发者只需拖放控件,选择合适的布局管理器即可快速构建界面,无需过多考虑具体的布局代码实现。这使得界面开发变得更加高效和直观。

主要的布局管理方式包括:

  1. 水平布局:将控件从左到右水平排列。适合放置一些并列的按钮、标签等。
  2. 垂直布局:将控件从上到下垂直排列。适合放置纵向排列的控件,如标题和内容区域。
  3. 表单布局:专门用于表单界面,将标签和输入框成对放置。
  4. 网格布局:将控件放置在二维网格中。方便布局复杂的界面结构,如表单。

这些布局管理器可以灵活组合使用,实现复杂的界面设计。

二、窗口布局

1.布局打开方式

(1)方法一:Qt Designer -> Form菜单栏
(2)方法二:右键单击主窗口选择Lay out(窗口设定)

2.四种基本布局

水平布局

当我们有杂乱无章的控件(比如按钮、标签、输入框等)时,如果使用水平布局,它们就会被排列成一行,从左到右依次展示。

特点

  1. 控件会水平排列,不会重叠在一起。
  2. 控件之间会有一定的间距,不会挤在一起。
  3. 整个布局区域会随着控件数量的增加而水平拉伸。
  4. 如果有空间不足,控件可能会被压缩以适应布局区域。

布局效果如下
软件实际运行效果图:

垂直布局

当我们有杂乱无章的控件时,如果使用垂直布局,它们就会被垂直排列,从上到下依次展示。

特点

  1. 垂直排列:垂直布局会将控件从上到下垂直排列,而不是水平排列。这样可以更好地组织纵向排列的界面元素。
  2. 间隔分布:控件之间会保持一定的垂直间隔,不会挤在一起。这样可以让布局看起来更加整洁有序。
  3. 高度自适应:随着控件数量的增加,布局区域的高度会自动拉伸以容纳所有控件。这种自适应特性可以让开发者无需手动调整布局大小。
  4. 空间利用:如果空间有限,垂直布局会自动压缩控件尺寸以适应布局区域。这样可以充分利用有限的垂直空间。
  5. 视觉清晰:将杂乱无章的控件垂直排列后,界面会变得更加整洁有序,提高了视觉效果和可读性。

布局效果如下
软件实际运行效果图:

总之,垂直布局是一种非常实用的布局管理方式,可以帮助开发者快速构建纵向排列的界面元素,并保持良好的视觉效果。

表单布局

表单布局是一种专门用于构建表单界面的布局方式。它会将控件排列成两列:左列放置标签(Label),用于描述每个输入项的含义,右列放置输入控件(如文本框、下拉框等),供用户输入数据。

使用这种表单布局,就可以很方便地构建出一个典型的表单界面。比如对于用户名和密码输入。

布局效果如下
软件实际运行效果图:

这种左标签右输入框的排列方式,可以让整个表单界面看起来更加整洁美观,也更加符合用户的习惯和期望。

网格布局

网格布局就是将界面划分成一个个小方格网格,然后将控件依次放置在这些网格单元格中。它的特点如下:

  1. 将界面分成行和列:网格布局会将整个界面区域划分成若干行和列,形成一个二维的网格布局。
  2. 控件按网格摆放:我们可以将各种控件(按钮、标签、输入框等)依次放置在这个网格的单元格中。
  3. 均匀分布控件:网格布局会自动将控件平均分布在网格单元格中,不会出现太密集或太稀疏的情况。
  4. 自适应性强:当我们调整界面大小时,网格布局可以自动调整行列数,使控件保持均匀分布。

布局效果如下
软件实际运行效果图:

网格布局是一种非常实用的布局方式,可以帮助我们快速构建出整洁有序的界面。但对于一些特殊的控件组合,可能需要采用更灵活的布局方式。

3.嵌套布局

当一个界面中有多种不同类型的控件时,单一的布局方式可能无法满足所有控件的需求。这时就需要采用"布局嵌套"的方式来解决。

具体来说,就是先分析界面上不同类型控件的特点,然后针对不同的控件组合,采用不同的布局方式。比如:

  1. 对于用户名和密码这种标签+输入框的组合,可以采用表单布局,将标签和输入框整齐地排列在左右两列。
  2. 对于登录和退出按钮这种控件,可以采用水平布局,整体与用户名密码加输入框进行垂直布局
  3. 最后,可以将上述两个布局嵌套在一个网格布局中,再加上一个显示文本框。这样就形成了一个层次化、结构化的布局。

布局效果如下
有时候,我们在使用布局嵌套的方式组织界面控件时,可能会遇到某些特殊的控件组合,它们不太适合被布局方式约束,可以通过选中需要特殊处理的控件组合,在菜单中找到"Form"选项卡,点击"Break Layout"功能打破布局

4.绝对布局管理

在某些情况下,使用布局管理工具进行界面设置可能无法完全满足需求。这时,可以考虑通过手动修改控件的几何属性(geometry)来进行对齐和定位。

具体来说,geometry 属性在 PyQt 中主要用于设置控件在窗口中的绝对坐标位置以及控件自身的大小尺寸。通过直接操作这个属性,我们可以打破布局管理工具的限制,更加灵活地调整控件在界面上的位置和大小。

示例:
将以下控件进行对齐。首先我们看到A的X坐标是11,Y坐标是181,宽为75。LineEdit控件X坐标为192,Y坐标为183,宽为132。
(1)先将LineEditY坐标调整至181保证与A水平对齐并计算A与LineEdit间距为192-111-75=6
(2)将B与右侧LineEdit控件也保持间距6,重复上面步骤计算A与B之间间距为240-181-24=35
(3)保证下侧LineEdit控件与上侧LineEdit控件间距也为35即可完成定位

三、结束

无论是使用布局管理器还是直接操作控件几何属性,关键是要根据具体的需求选择最合适的方法。前者可以快速搭建出整体布局,后者则能带来更大的灵活性。两种方式结合使用,定能帮助您打造出功能完备、美观大方的用户界面。

界面设计是一项需要不断学习和实践的技能。相信通过持续探索和实践,您一定能够在PyQt开发中驾驭好各种布局技巧,让您的应用程序拥有出色的用户体验。让我们一起继续学习,在PyQt的道路上不断精进!

文章的包含的代码我放在我的github

四、相关链接

  • PyQt5 QtDesigner 教程 - 布局管理
  • PyQt5 QtDesigner 控件几何属性调整
  • PyQt5 QtDesigner 实战教程
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号