2017-02-12 1 views
0

У меня возникла проблема с изменением размера кадра на основе нажатия одной кнопки. У меня есть пустое окно с одной кнопкой, которая называется pushButton в моем файле ui. Я хотел бы, чтобы всякий раз, когда эта кнопка нажата, размеры MainWindow изменяются, однако изменение размера происходит только один раз. Исходные размеры 640 на 480.PyQt - Toggle Frame Resize Push Button

Что я делаю неправильно в функции 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_()) 
+0

ваше состояние на 'frame' объекта и установить размер вашего' QMainWindow'. Попробуйте заменить 'if self.frame.height() == 480:' by 'if self.height() == 480:' – SyedElec

+0

Вау, спасибо! Это было! –

+0

Нет проблем :) Я написал ответ, чтобы он мог помочь другим пользователям. – SyedElec

ответ

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_())