PyQt — кнопка переключения размера кадра

У меня проблема с изменением размера кадра на основе нажатия одной кнопки. У меня есть пустое окно с одной кнопкой с именем pushButton в моем файле пользовательского интерфейса. Я хотел бы, чтобы при каждом нажатии этой кнопки размеры MainWindow изменялись, однако изменение размера происходило только один раз. Оригинальные размеры 640 на 480.

Что я делаю неправильно в функции run_resize? Спасибо!

Код выглядит следующим образом.

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.uic import loadUiType

qtCreatorFile = 'my_gui.ui'
Ui_MainWindow, QtBaseClass = loadUiType(qtCreatorFile)

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)

        self.setupUi(self)
        self.setFixedSize(self.size())

        self.frame = QFrame()

        self.pushButton.clicked.connect(self.run_resize)

    def run_resize(self):
        if self.frame.height() == 480:
            self.setMinimumSize(640, 150)
            self.resize(640, 150)
        else:
            self.setMinimumSize(640, 480)
            self.resize(640, 480)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = main_window()
    w.show()
    sys.exit(app.exec_())

person jim mako    schedule 12.02.2017    source источник
comment
ваше условие относится к объекту frame, и вы устанавливаете размер вашего QMainWindow. Попробуйте заменить if self.frame.height() == 480: на if self.height() == 480:   -  person SyedElec    schedule 12.02.2017
comment
Вау, спасибо! это было оно!   -  person jim mako    schedule 12.02.2017
comment
Нет проблем :) Я написал ответ, чтобы он мог помочь другим пользователям.   -  person SyedElec    schedule 12.02.2017


Ответы (1)


Вы должны проверить условие на QMainWindow, вот рабочий пример:

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.uic import loadUiType

qtCreatorFile = 'my_gui.ui'
Ui_MainWindow, QtBaseClass = loadUiType(qtCreatorFile)

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)

        self.setupUi(self)
        self.setFixedSize(self.size())

        self.pushButton.clicked.connect(self.run_resize)

    def run_resize(self):
        if self.height() == 480:
            self.setMinimumSize(640, 150)
            self.resize(640, 150)
        else:
            self.setMinimumSize(640, 480)
            self.resize(640, 480)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
person SyedElec    schedule 12.02.2017