PyQt5 布局管理

PyQt5 布局管理

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

然而,这种绝对定位并不适合,因为有以下原因

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

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

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

PyQt5 - 布局管理

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

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

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

  • 可以动态地添加或删除widget,而不需要重新设计。

Qt工具包定义了各种布局,可以与Qt Designer工具一起使用。

PyQt5 - 布局管理

下面是我们将在本章中逐一讨论的类的列表。

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程