PyQt - สลับปุ่มกดปรับขนาดเฟรม

ฉันมีปัญหาในการปรับขนาดเฟรมตามการคลิกปุ่มเพียงปุ่มเดียว ฉันมีหน้าต่างว่างที่มีปุ่มกดเพียงปุ่มเดียวชื่อ pushButton ในไฟล์ UI ของฉัน ฉันต้องการให้ทุกครั้งที่กดปุ่มนี้ ขนาดของ MainWindow จะเปลี่ยนไป แต่การปรับขนาดจะเกิดขึ้นเพียงครั้งเดียวเท่านั้น ขนาดดั้งเดิมคือ 640 x 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