QFormLayout:标签列在调整大小时被截断

时间:2016-03-14 16:23:54

标签: python qt pyqt

当我调整 QFormLayout 的大小时,标签列会消失。

这是我的布局:

Form description

label = QLabel("I don't want to be truncated!")

horizontal_layout = QHBoxLayout()
for i in range(5):
    button = QPushButton(str(i))
    horizontal_layout.addWidget(button)

form_layout = QFormLayout()
form_layout.addRow(label, horizontal_layout)

调整大小:

Label gone

为什么隐藏该列?应该有足够的位置来显示它,因为按钮宽度可以非常小。这是他们的最小尺寸:

Minimum size

在我的真实程序中,标签列是截断。我试图重现这个问题,但我失败了。然而,消失的列几乎是同样的问题。

完整源代码:

import sys
from PyQt4.QtGui import QApplication, QWidget, QFormLayout, QHBoxLayout,\
    QPushButton, QLabel


class Form(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        label = QLabel("I don't want to be truncated!")

        horizontal_layout = QHBoxLayout()
        for i in range(5):
            button = QPushButton(str(i))
            horizontal_layout.addWidget(button)

        form_layout = QFormLayout()
        form_layout.addRow(label, horizontal_layout)
        self.setLayout(form_layout)

        self.setMinimumWidth(1)

application = QApplication(sys.argv)
form = Form()
form.show()
application.exec_()

1 个答案:

答案 0 :(得分:1)

如果这一行

self.setMinimumWidth(1)

替换为

button.setMinimumWidth(1)

作为for循环的第二行,它可以工作