前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | 一分钟带你了解PyQt的窗口布局

干货 | 一分钟带你了解PyQt的窗口布局

作者头像
潘永斌
发布2019-10-08 17:04:45
1.2K0
发布2019-10-08 17:04:45
举报
文章被收录于专栏:看那个码农看那个码农
布局管理是GUI编程中的重要部分。布局管理是一种如何在应用窗口上放置组件的方法。

我们可以通过两种基本方式来管理布局。

绝对定位和布局类。

上文我们提到PyQt编程中的绝对定位,今天我们来谈谈另外一种布局方式-窗口布局。

使用四种窗口布局管理界面控件布局是组织窗口小部件的首选方式。

常用的窗口布局有以下几种:

1.水平布局管理器(QHBoxLayout)

2.垂直布局管理器(QVBoxLayout)

3.栅格布局管理器(QGridLayout)

4.表单布局管理器(QFormLayout)

QHBoxLayout

水平布局管理器(QHBoxLayout):这个管理器是将控件进行水平布局,在水平方向上整理排列控件。

如下所示:

这里的话就是将"OK","NO","GOOD"三个按钮控件进行水平布局,从左到右的进行排列。

部分示例代码如下:

代码语言:javascript
复制
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QtWidgets.QPushButton(self.widget)
self.pushButton_2.setObjectName("pushButton_2")
self.horizontalLayout.addWidget(self.pushButton_2)
self.pushButton_3 = QtWidgets.QPushButton(self.widget)
self.pushButton_3.setObjectName("pushButton_3")
self.horizontalLayout.addWidget(self.pushButton_3)

这里的代码含义是创建3个按钮,创建了3个按钮之后,将3个按钮进行从左到右的水平布局。

QVBoxLayout

垂直布局管理器(QVBoxLayout):这个管理器是将控件进行垂直布局,在垂直方向上整理排列控件。

如下所示:

这里的话就是将"GOOD","NO","OK",三个按钮控件进行垂直布局,从上到下的进行排列。

部分示例代码如下:

代码语言:javascript
复制
self.pushButton_3.setObjectName("pushButton_3")
self.verticalLayout.addWidget(self.pushButton_3)
self.pushButton_2 = QtWidgets.QPushButton(self.widget)
self.pushButton_2.setObjectName("pushButton_2")
self.verticalLayout.addWidget(self.pushButton_2)
self.pushButton = QtWidgets.QPushButton(self.widget)
self.pushButton.setObjectName("pushButton")
self.verticalLayout.addWidget(self.pushButton)

这里的代码含义是创建3个按钮,创建了3个按钮之后,将3个按钮进行从上到下的垂直布局。

QGridLayout

栅格布局管理器(QGridLayout):用网格的形式,把程序中添加的控件以一定的矩阵形式进行排列。

如下所示:

这里的话就是将"1"至"9",九个按钮控件按照3*3矩阵的形式,从左到右,从上往下进行控件布局。

部分示例代码如下:

代码语言:javascript
复制
self.pushButton.setObjectName("pushButton")
self.gridLayout_2.addWidget(self.pushButton, 0, 0, 1, 1)
self.pushButton_2 = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName("pushButton_2")
self.gridLayout_2.addWidget(self.pushButton_2, 0, 1, 1, 1)
self.pushButton_6 = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushButton_6.setObjectName("pushButton_6")
self.gridLayout_2.addWidget(self.pushButton_6, 1, 2, 1, 1)
self.pushButton_5 = QtWidgets.QPushButton(self.gridLayoutWidget)

这里的代码含义是创建3个按钮,创建了3个按钮之后,将3个按钮进行矩阵排列。

如括号里面的(0,0,1,1),这里的话,前两个数字意思是将按钮放置在矩阵开始的第一行第一列,后两个数字意思是按钮占一行一列,也就是一个空格的空间。

QFormLayout

表单布局管理器(QFormLayout):在显示窗口中,以两列的形式排列所添加的控件。

如下所示:

部分示例代码如下:

代码语言:javascript
复制
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.lineEdit)
self.label = QtWidgets.QLabel(self.formLayoutWidget)
self.label.setObjectName("label")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label)
self.lineEdit_2 = QtWidgets.QLineEdit(self.formLayoutWidget)
self.lineEdit_2.setObjectName("lineEdit_2")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lineEdit_2)
self.label_2 = QtWidgets.QLabel(self.formLayoutWidget)
self.label_2.setObjectName("label_2")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2)

这里的代码含义是创建2个标签控件,2个文本控件,将每个标签控件和一个文本控件进行匹配。标签和组件是相对应的关系。

以上就是今天谈到的四种窗口布局,你学会了吗?

看完本文如有任何疑问,可发送疑问至后台,工作人员看到后会第一时间为你解决。

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 看那个码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档