Qt Designer提供了四种窗口布局方式,分别是垂直布局(Vertical Layout)、水平布局(Horizontal Layout)、栅格布局(Grid Layout)和表单布局(Form Layout)
- 垂直布局:控件默认按照从上到下的顺序进行纵向添加
- 水平布局:控件默认按照从左到右的顺序横向添加。
- 栅格布局:将窗口控件放入一个网格中,然后将它们合理地划分为若干行(row)和列(column)。
- 表单布局:控件以两列的形式布局在表单中
使用布局管理器布局
打开Qt Designer,新建一个Widget空间,然后放入两个子控件:一个文本框(lineEdit)和一个按钮(pushButton)。选中两个控件,然后单击鼠标右键,然后在弹出的快捷菜单中选择布局的子菜单就可以指定该控件的布局方式,选择水平布局
# -*- coding: utf-8 -*-fromPyQt5importQtCore,QtGui,QtWidgetsclassUi_Form(object):defsetupUi(self,Form):Form.setObjectName("Form")Form.resize(889,682)self.widget=QtWidgets.QWidget(Form)self.widget.setGeometry(QtCore.QRect(310,50,216,25))self.widget.setObjectName("widget")self.horizontalLayout=QtWidgets.QHBoxLayout(self.widget)self.horizontalLayout.setContentsMargins(0,0,0,0)self.horizontalLayout.setObjectName("horizontalLayout")self.lineEdit=QtWidgets.QLineEdit(self.widget)self.lineEdit.setObjectName("lineEdit")self.horizontalLayout.addWidget(self.lineEdit)self.pushButton=QtWidgets.QPushButton(self.widget)self.pushButton.setObjectName("pushButton")self.horizontalLayout.addWidget(self.pushButton)self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)defretranslateUi(self,Form):_translate=QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form","Form"))self.pushButton.setText(_translate("Form","确定"))
新建一个MainWindow,然后对控件进行各种各样的布局
容器布局
容器控件就是指能够容纳子控件的控件,使用容器控件,目的就是将容器控件中的控件归为一类,已有别于其他控件。
在左侧容器(containers)导航栏中托人一个Frame控件,然后放入Label、LineEdit和Button控件。
# -*- coding: utf-8 -*-fromPyQt5importQtCore,QtGui,QtWidgetsclassUi_Form(object):defsetupUi(self,Form):Form.setObjectName("Form")Form.resize(889,682)self.frame=QtWidgets.QFrame(Form)self.frame.setGeometry(QtCore.QRect(250,130,264,43))self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)self.frame.setFrameShadow(QtWidgets.QFrame.Raised)self.frame.setObjectName("frame")self.horizontalLayout=QtWidgets.QHBoxLayout(self.frame)self.horizontalLayout.setObjectName("horizontalLayout")self.label=QtWidgets.QLabel(self.frame)self.label.setObjectName("label")self.horizontalLayout.addWidget(self.label)self.lineEdit=QtWidgets.QLineEdit(self.frame)self.lineEdit.setObjectName("lineEdit")self.horizontalLayout.addWidget(self.lineEdit)self.pushButton=QtWidgets.QPushButton(self.frame)self.pushButton.setObjectName("pushButton")self.horizontalLayout.addWidget(self.pushButton)self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)defretranslateUi(self,Form):_translate=QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form","Form"))self.label.setText(_translate("Form","姓名"))self.pushButton.setText(_translate("Form","确定"))打开Qt Designer,新建一个主窗口中
拖到一个PushButton放在窗口中,查看右侧是属性编辑器
绝对布局
Geometry属性在PyQt中主要用来设置控件在窗口中的绝对坐标于自身控件的大小。
这里设置的意思就是按钮左上角距离主窗口右侧为280px,上侧为130px,宽度为75px,高度为23px。
然后再添加一些控件
minimumSize和maximumSize属性
minimumSize和maximumSize属性用来设置控件在布局管理器中的最小尺寸和最大尺寸。