geomertry
self.pushButton=QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(215,140,75,23))
self.pushButton.setObjectName("pushButton")
self.pushButton.setMinimumSize(QtCore.QSize(100,100))
self.pushButton.setMaximumSize(QtCore.QSize(300,300))
sizePolicy
每个窗口控件都有属于自己的两个尺寸
python
sizePolicy=QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0) # 水平伸展0
sizePolicy.setVerticalStretch(0) # 垂直伸展0
sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
sizePolicy 的作用是,如果窗口控件在布局管理器中的布局不能满足我们的需求,那么就可以设置该窗口控件的sizePolicy来实现布局的微调。
Fixed | 窗口控件具有其sizeHint所提示的尺寸且尺寸不会再改变。 |
---|---|
Minimum | 窗口控件的 sizeHint 所提示的尺寸就是它的最小尺寸;该窗口控件不能被压缩得比这个值小,但可以变得更大。 |
Maximum | 窗口控件的sizeHint所提示的尺寸就是它的最大尺寸;该窗口控件不能变得比这个值大,但它可以被压缩到minisizeHint给定的尺寸大小。 |
Preferred | 窗口控件的 sizeHint 所提示的尺寸就是它的期望尺寸;该窗口控件可以缩小到minisizeHint所提示的尺寸,也可以变得比sizeHint所提示的尺寸还要大。 |
Expanding | 窗口控件可以缩小到minisizeHint所提示的尺寸,也可以变得比sizeHint所提示的尺寸大,但它希望能够变得更大。 |
MinimumExpanding | 窗口控件的sizeHint所提示的尺寸就是它的最小尺寸;该窗口控件不能被压缩得比这个值还小,但它希望能够变得更大。 |
Ignored | 无视窗口控件的 sizeHint 和 minisizeHint 所提示的尺寸,按照默认来设置。 |
布局顺序
(1)将一个窗口控件拖入窗口中并放置在大致正确的位置上。除了容器(container)窗口,一般不需要调整窗口的尺寸大小。
(2)对于要用代码引用的窗口控件,应指定一个名字;对于需要微调的窗口控件,可以设置其对应的属性。
(3)重复步骤1和2,直到所需要的全部窗口控件都放到了窗口中。
(4)如有需要,在窗口控件之间可以用 Vertical Spacer、Horizontal Spacer、Horizontal Line、Vertical Line隔开(实际上前两步就可以包含这部分内容)。
(5)选择需要布局的窗口控件,使用布局管理器或者切分窗口(splitter)对它们进行布局。
(6)重复步骤5,直到所有的窗口控件和分隔符都布局好为止。
(7)单击窗口,并使用布局管理器对其进行布局。
(8)为窗口的标签设置伙伴关系。
(9)如果按键次序有问题,则需要设置窗口的Tab键次序。
(10)在适当的地方为内置的信号和槽建立信号与槽连接。
(11)预览窗口,并检查所有的内容能否按照设想进行工作。
(12)设置窗口的对象名(在类中会用到这个名字)、窗口的标题并进行保存。
(13)使用 Eric 或有类似功能的工具(如在命令行中使用 pyuic5)编译窗口,然后根据需要生成对话框代码(Eric 在逻辑文件上建立信号与槽连接的方式,本章会在3.4.2节“快速进阶”中进行介绍)。
(14)进行正常的代码编写工作,即编写业务逻辑文件。