Pyqt5 简明教程

PyQt5 - Layout Management

可以通过指定 GUI 小组件绝对坐标来将其放置在容器窗口中,坐标以像素为单位进行测量。坐标相对于 setGeometry() 方法定义的窗口维度。

setGeometry() syntax

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

在下面的代码片段中,300 乘以 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 像素的下方。

但是,这种绝对定位由于以下原因而不适合:

  1. 即使调整了窗口的大小,小组件的位置也不会改变。

  2. 在具有不同分辨率的不同显示设备上,外观可能不统一。

  3. 布局中的修改比较困难,因为它可能需要重新设计整个表单。

original resized window

PyQt API 提供布局类,可以更优雅地管理容器内小组件的位置。相对于绝对定位,布局管理器的优点是 -

  1. 窗口中的小组件自动调整大小。

  2. 确保在不同分辨率的显示设备上一致的外观。

  3. 添加或删除小组件的动态性无需重新设计。

Qt 工具包定义了可与 Qt Designer 实用程序一起使用的各种布局。

display class

以下是我们将在本章中依次讨论的类列表。

Sr.No.

Classes & Description

1

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

2

QGridLayout A GridLayout 类对象显示为按行和列排列的单元格网格。该类包含 addWidget() 方法。可以通过指定单元格的行和列数来添加任何小部件。

3

QFormLayout QFormLayout 是创建两栏表单的一种便捷方式,其中每行都包含一个与标签关联的输入字段。按照惯例,左栏包含标签,右栏包含输入字段。