0

我有以下 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)

这导致:

在此处输入图像描述

我希望文本在按钮之间居中,但它离开了对齐。

如果我注释掉我得到的标签:

在此处输入图像描述

我希望按钮左右对齐,但他们似乎没有这样做。

获得我想要的行为的正确语法是什么?

另外我如何让按钮自动调整大小到它包含的文本?必须在上面的代码中硬编码大小。

4

1 回答 1

2

您正在添加标签,并且它居中(它填充了两个按钮之间的所有空间)。但这并不意味着标签中的文本也会自动居中。为此,只需添加:

self._pagination_label.setAlignment(Qt.AlignCenter)

您还可以QSpacerItem在按钮和标签之间添加 s 以获得相同的效果(通过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)
于 2012-07-06T14:29:39.450 回答