PyQt QBoxLayout类

PyQt QBoxLayout类

QBoxLayout 类可将小部件垂直或水平排列。它的派生类有 QVBoxLayout (用于垂直排列小部件)和 QHBoxLayout (用于水平排列小部件)。以下表格显示了QBoxLayout类的重要方法:

序号 方法和描述
1 addWidget() 向BoxLayout添加一个小部件
2 addStretch() 创建一个空的可拉伸的框
3 addLayout() 添加另一个嵌套的布局

示例1

在垂直盒布局中添加了两个按钮。通过addStretch()方法在它们之间添加了一个可伸缩的空白空间。因此,如果顶级窗口被调整大小,按钮的位置会自动重新定位。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")

   vbox = QVBoxLayout()
   vbox.addWidget(b1)
   vbox.addStretch()
   vbox.addWidget(b2)
   win.setLayout(vbox)

   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

上述代码会产生以下输出:

PyQt QBoxLayout类

示例2

这个示例使用水平盒布局。addStretch() 方法在两个按钮对象之间插入了一个可伸缩的空间。因此,当窗口大小调整时,按钮的大小和位置会动态变化。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")

   hbox = QHBoxLayout()

   hbox.addWidget(b1)
   hbox.addStretch()
   hbox.addWidget(b2)
   win.setLayout(hbox)
   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

上面的代码产生以下输出:

PyQt QBoxLayout类

示例3

此示例展示了布局的嵌套。在这里,向垂直盒子布局中添加了两个按钮。然后,将一个水平盒子布局对象(包含两个按钮和一个可拉伸的空间)添加到其中。最后,通过setLayout()方法将垂直盒子布局对象应用于顶层窗口。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")

   vbox = QVBoxLayout()
   vbox.addWidget(b1)
   vbox.addStretch()
   vbox.addWidget(b2)
   hbox = QHBoxLayout()

   b3 = QPushButton("Button3")
   b4 = QPushButton("Button4")
   hbox.addWidget(b3)
   hbox.addStretch()
   hbox.addWidget(b4)

   vbox.addStretch()
   vbox.addLayout(hbox)
   win.setLayout(vbox)

   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

上述代码输出如下:

PyQt QBoxLayout类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程