找回密码
 立即注册
Qt开源社区 门户 查看内容

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

2019-9-12 05:40| 发布者: admin| 查看: 1548| 评论: 0

摘要: 本篇推文共计1000个字,阅读时间约1分钟。布局管理是GUI编程中的重要部分。布局管理是一种如何在应用窗口上放置组件的方法。我们可以通过两种基本方式来管理布局。绝对定位和布局类。上文我们提到PyQt编程中的绝对定 ...


本篇推文共计1000个字,阅读时间约1分钟。

布局管理是GUI编程中的重要部分。布局管理是一种如何在应用窗口上放置组件的方法。




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

绝对定位和布局类。

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

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



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

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

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

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

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



QHBoxLayout

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

如下所示:



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

部分示例代码如下:

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",三个按钮控件进行垂直布局,从上到下的进行排列。

部分示例代码如下:

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矩阵的形式,从左到右,从上往下进行控件布局。

部分示例代码如下:

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):在显示窗口中,以两列的形式排列所添加的控件。

如下所示:



部分示例代码如下:

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



图片|网络

编辑|一个码农






你与世界

只差一个

公众号



喜欢本文的话麻烦你点个“关注”加“在看”

觉得写得不错的话可以点击下方“喜欢作者”

你的支持是我不断前行的动力

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:看那个码农,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了