我有以下pyside小部件代码:
class NavigationHeadWidget(QWidget):
def __init__(self):
QWidget.__init__(self)
self._current_page = 0
self._last_page = 0
self._pageination_string = "page %s of %s"
self._pagination_label = QLabel()
self._pagination_label.setText(self._pageination_string % (str(self._current_page), str(self._last_page)))
self.setMinimumWidth(400)
self._header_buttons_prev = QPushButton("b_prev")
self._header_buttons_next = QPushButton("b_next")
self._header_buttons_prev.setText("prev")
self._header_buttons_next.setText("next")
self._header_buttons_next.setMaximumWidth(40)
self._header_buttons_prev.setMaximumWidth(40)
self._layout = QHBoxLayout()
self._layout.addWidget(self._header_buttons_prev,Qt.AlignLeft)
self._layout.addWidget(self._pagination_label,Qt.AlignCenter)
self._layout.addWidget(self._header_buttons_next,Qt.AlignRight)
self.setLayout(self._layout)
导致:
我希望文本在按钮之间居中,但它会留下所有符号。
如果我注释掉我得到的标签:
我希望按钮可以左右对齐,但它们似乎并没有这样做。
什么是正确的语法来获得我想要的行为?
Additionaly如何让按钮自动调整为包含的文本?必须在上面的代码中硬编码大小。
答案 0 :(得分:2)
你添加了标签,它居中(它填满了两个按钮之间的所有空间)。但这并不意味着标签内的文本也会自动居中。要做到这一点,只需添加:
self._pagination_label.setAlignment(Qt.AlignCenter)
您还可以在按钮和标签之间添加QSpacerItem
以获得相同的效果(通过调用需要可伸缩空间的布局addStretch
方法):
self._layout.addWidget(self._header_buttons_prev)
self._layout.addStretch()
self._layout.addWidget(self._pagination_label)
self._layout.addStretch()
self._layout.addWidget(self._header_buttons_next)