我们可以通过两种基本方式来管理布局。
绝对定位和布局类。
上文我们提到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