Python 自动调整QWidget的高度

Python 自动调整QWidget的高度,python,qt,pyqt,Python,Qt,Pyqt,我想知道,当我编辑包含此小部件的QDialog的高度时,如何创建一个小部件来自动适应空间 在下面的示例中,QPushButton将适合QDialog的宽度,但不适合高度。但是,如果我创建一个QTextEdit而不是QPushButton,那么QTextEdit将完全适合QDialog from PySide.QtGui import * class c (QDialog): def __init__(self): QDialog.__init__(self)

我想知道,当我编辑包含此小部件的QDialog的高度时,如何创建一个小部件来自动适应空间

在下面的示例中,QPushButton将适合QDialog的宽度,但不适合高度。但是,如果我创建一个QTextEdit而不是QPushButton,那么QTextEdit将完全适合QDialog

from PySide.QtGui  import *

class c (QDialog):
    def __init__(self):
        QDialog.__init__(self)

        self.setLayout(QVBoxLayout())
        self.layout().setSpacing (0)
        self.layout().setContentsMargins(0,0,0,0); 

        btn = QPushButton()
        self.layout().addWidget(btn)

        self.exec_()

a = c()

您需要设置要展开的大小策略。 我不知道Python中的语法,但是你可以很容易地从C++中翻译。
QPushButton* button = new QPushButton(this);
button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

QBoxLayout::addWidget(widget, stretch=0, alignment=0)
如果拉伸因子为0,并且QBoxLayout中没有任何其他拉伸因子大于零,则空间将根据所涉及的每个小部件的QWidget:sizePolicy()分布

那么看看
QPushButton的默认设置

>>> btn = QPushButton()
>>> btn.sizePolicy().horizontalPolicy()
1
>>> btn.sizePolicy().verticalPolicy()
0
我们会发现,垂直策略是固定的。添加按钮式

[...]

    btn = QPushButton()
    policy = btn.sizePolicy().horizontalPolicy()
    btn.setSizePolicy(policy, policy)
    self.layout().addWidget(btn)

[...]
现在将自动调整对话框中的按钮