通过指定以像素为单位测量的绝对坐标,可以将GUI小部件放置在容器窗口内.坐标相对于setGeometry()方法定义的窗口的尺寸.
setGeometry()语法
QWidget.setGeometry(xpos,ypos,width,height)
在下面的代码片段中,300 x 200像素尺寸的顶级窗口是显示在显示器上的位置(10,10).
import sysfrom PyQt4 import QtGuidef 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&说明 |
---|---|
1 | QBoxLayout QBoxLayout类垂直或水平排列小部件.它的派生类是QVBoxLayout(用于垂直排列小部件)和QHBoxLayout(用于水平排列小部件). |
2 | QGridLayout GridLayout类对象呈现行和列排列的单元格网格.该类包含addWidget()方法.可以通过指定单元格的行数和列数来添加任何窗口小部件. |
3 | QFormLayout QFormLayout是一种方便的方式创建两个列形式,其中每一行包含与标签关联的输入字段.按照惯例,左列包含标签,右列包含输入字段. |