PyQt - 布局管理

通过指定以像素为单位测量的绝对坐标,可以将GUI小部件放置在容器窗口内.坐标相对于setGeometry()方法定义的窗口的尺寸.

setGeometry()语法

QWidget.setGeometry(xpos,ypos,width,height)

在下面的代码片段中,300 x 200像素尺寸的顶级窗口是显示在显示器上的位置(10,10).

import sys
from PyQt4 import QtGui

def window():
   app = QtGui.QApplication(sys.argv)
   w = QtGui.QWidget()
	
   b = QtGui.QPushButton(w)
   b.setText("Hello World!")
   b.move(50,20)
	
   w.setGeometry(10,10,300,200)
   w.setWindowTitle("PyQt")
   w.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   window()

在窗口中添加了 PushButton 小部件,并将其放置在右上方50像素位置和顶部下方20像素的位置窗口的英尺位置.

绝对定位不适用,原因如下:<

  • 即使调整窗口大小,窗口小部件的位置也不会改变.

  • 外观在具有不同分辨率的不同显示设备上可能不一致.

  • 布局中的修改很困难,因为它可能需要重新设计整个表格.

原始和调整大小的窗口

PyQt API提供布局类,以便更加优雅地管理容器内小部件的定位.布局管理器优于绝对定位的优点是 :

  • 窗口内的窗口小部件会自动调整大小.

  • 确保在具有不同分辨率的显示设备上均匀显示.

  • 无需动态添加或删除小部件重新设计.

这是我们将在本章逐一讨论的类列表.

Sr.No.Classes&说明
1QBoxLayout

QBoxLayout类垂直或水平排列小部件.它的派生类是QVBoxLayout(用于垂直排列小部件)和QHBoxLayout(用于水平排列小部件).

2QGridLayout

GridLayout类对象呈现行和列排列的单元格网格.该类包含addWidget()方法.可以通过指定单元格的行数和列数来添加任何窗口小部件.

3QFormLayout

QFormLayout是一种方便的方式创建两个列形式,其中每一行包含与标签关联的输入字段.按照惯例,左列包含标签,右列包含输入字段.