PyQt 布局管理

PyQt 布局管理

通过指定以像素为单位的绝对坐标,可以将GUI小部件放置在容器窗口中。这些坐标是相对于由setGeometry()方法定义的窗口的尺寸的。

setGeometry()语法

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像素的位置。

然而,由于以下原因, 绝对定位 并不适用:

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

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

  • 修改布局很困难,可能需要重新设计整个表单。

PyQt 布局管理

PyQt API提供了布局类,用于更优雅地管理容器内部部件的定位。布局管理器相对于绝对定位的优势包括:

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

  • 确保在具有不同分辨率的显示设备上的统一外观。

  • 可以动态地添加或删除部件,而无需重新设计。

以下是本章将逐一讨论的类列表。

序号 类别与描述
1 QBoxLayout QBoxLayout类垂直或水平地排列小部件。它的派生类有QVBoxLayout(用于垂直排列小部件)和QHBoxLayout(用于水平排列小部件)。
2 QGridLayout QGridLayout类对象以行和列的形式呈现一个格子。该类包含addWidget()方法。通过指定格子的行数和列数可以添加任何小部件。
3 QFormLayout QFormLayout是一种方便创建两列表单的方式,每一行包含一个与标签相关联的输入字段。按照惯例,左列包含标签,右列包含输入字段。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程