PyQt - Tombol Tekan Pengubah Ukuran Bingkai

Saya mengalami masalah dalam mengubah ukuran bingkai berdasarkan mengklik satu tombol. Saya memiliki jendela kosong dengan satu tombol tekan bernama pushButton di file ui saya. Saya ingin setiap kali tombol ini ditekan, dimensi MainWindow diubah, namun pengubahan ukurannya hanya terjadi satu kali. Dimensi aslinya adalah 640 kali 480.

Apa yang salah saya lakukan di fungsi run_resize? Terima kasih!

Kodenya adalah sebagai berikut.

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 sumber
comment
kondisi Anda ada pada objek frame dan Anda mengatur ukuran QMainWindow Anda. Coba ganti if self.frame.height() == 480: dengan if self.height() == 480:   -  person SyedElec    schedule 12.02.2017
comment
Wow terima kasih! ini dia!   -  person jim mako    schedule 12.02.2017
comment
Tidak masalah :) Saya menulis jawaban sehingga dapat membantu pengguna lain.   -  person SyedElec    schedule 12.02.2017


Jawaban (1)


Anda harus memeriksa kondisi di QMainWindow, berikut adalah contoh yang berfungsi:

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