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()
上述代码会产生以下输出:
示例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()
上面的代码产生以下输出:
示例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()
上述代码输出如下: