изменение размера диалогового окна с помощью PyQt4

У меня есть этот образец кода:

import sys
from PyQt4.QtGui import (QApplication, QHBoxLayout, QVBoxLayout, QDialog,
                                          QFrame, QPushButton, QComboBox)

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        moreButton = QPushButton('moreButton')
        moreButton.setCheckable(True)
        resizeButton = QPushButton('Resize')
        combo = QComboBox()
        combo.addItems(['item1', 'item2'])

        layout1 = QHBoxLayout()
        layout1.addWidget(moreButton)
        layout1.addWidget(resizeButton)

        layout2 = QHBoxLayout()
        layout2.addWidget(combo)
        self.frame = QFrame()
        self.frame.setLayout(layout2)
        self.frame.hide()

        layout3 = QVBoxLayout()
        layout3.addLayout(layout1)
        layout3.addWidget(self.frame)

        moreButton.toggled.connect(self.frame.setVisible)
        moreButton.clicked.connect(self.method)
        resizeButton.clicked.connect(self.method)

        self.setLayout(layout3)
        self.resize(630, 50)

    def method(self):
        if self.frame.isVisible():           
            self.resize(630, 150)
        else:
            self.resize(630, 250)

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

Я запускаю его, и когда нажимается moreButton, появляется ComboBox или исчезает. Размер диалогового окна также изменяется. Но если я изменю метод на:

def method(self):
    if self.frame.isVisible():           
        self.resize(630, 150)
    else:
        self.resize(630, 50)

(чтобы установить начальный размер, когда комбо скрыто), изменение размера не работает. Однако, если я нажимаю кнопку resizeButton, которая связана с тем же метод - изменение размера работает правильно.

Я знаю, что есть и другие способы достижения такого результата (например, layout.setSizeConstraint (QLayout.SetFixedSize)), но я хочу явно объявить размер.

Что я делаю неправильно?

9
задан ekhumoro 7 January 2012 в 02:51
поделиться