PyQt5。如何在QHBoxLayout中居中按钮?

时间:2018-03-13 23:39:07

标签: python pyqt5

我希望按钮保持尽可能小,并且聚集到HBox的中心而不是向右倾斜。

import sys
from random import randint
from PyQt5.QtWidgets import QApplication, QFrame, QHBoxLayout, QPushButton, QVBoxLayout, QWidget, QLabel

app = QApplication(sys.argv)
Frame = QFrame()

vbox = QVBoxLayout(Frame)
for i1 in range(5):
    hbox = QHBoxLayout()
    hbox.setContentsMargins(0, 0, 0, 0)
    hbox.addStretch()

    for i2 in range(randint(1,10)):
        bb = QPushButton(str(i2))
        hbox.addWidget(bb)
    vbox.addLayout(hbox)

Frame.show()
app.exec_()

1 个答案:

答案 0 :(得分:0)

您可以使用布局上的setAlignment()方法调整父QFrame中心的按钮:

hbox.setAlignment(Qt.AlignCenter)
vbox.setAlignment(Qt.AlignCenter)

如果你想使用.addStretch()函数填充空格,你可以再次使用它(在内部for循环之后)也可以在按钮之后拉伸空间。左侧的单个拉伸将展开并将按钮向右推:

hbox.addStretch()  # epands and pushes to the right
for i2 in range(randint(1,10)):
    bb = QPushButton(str(i2))
    hbox.addWidget(bb)
hbox.addStretch()  # expands as well and compensates the first