PyQt5 - увеличение размера главного окна нажатием кнопки - PullRequest
0 голосов
/ 21 мая 2018

В настоящее время у меня есть окно размером 775x380 и кнопка.Я хочу увеличить высоту своего окна до 775x780, когда нажимаю кнопку, но по какой-то причине не работает.Это функция, которую я вызываю, когда нажимаю кнопку (панель, на которой с самого начала находится текст «+»):

def resize(self):
    if self.dock.text() == '+':
        print('increase size')
        self.resize(775,780)
        self.dock.setText("-")
    else:
        print('decrease size')
        self.resize(775,380)
        self.dock.setText("+")

Команды печати больше подходят для отладки и работают нормально, но для некоторыхпричина, по которой «self.resize (775,780)» не работает.Размер окна остается прежним, а кнопка меняет текст с «+» на «-» и наоборот.

Редактировать для пояснения: resize () - функция в классе MainWindow (объект). Редактировать 2: Здесьвесь код, который я использую (по крайней мере, соответствующая часть кода)

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):

    def setupUi(self, MainWindow):

        #MAIN WINDOW
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(775, 340)
        MainWindow.setWindowTitle("MainWindow")

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        #APPLY BUTTON
        self.apply = QtWidgets.QPushButton(self.centralwidget)
        self.apply.setGeometry(QtCore.QRect(440, 10, 75, 25))
        self.apply.setText("Apply")
        self.apply.setObjectName("apply")

        #REREF BUTTON
        self.reref = QtWidgets.QPushButton(self.centralwidget)
        self.reref.setGeometry(QtCore.QRect(280, 10, 75, 25))
        self.reref.setText("Re Ref")
        self.reref.setObjectName("reref")

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1324, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        #RESIZE BUTTON
        self.dock = QtWidgets.QPushButton(self.centralwidget)
        self.dock.setGeometry(QtCore.QRect(-1, 280, 777, 30))
        self.dock.setText("+")
        self.dock.setObjectName("dock")
        #
        self.apply.clicked.connect(self._big)
        self.reref.clicked.connect(self._small)

        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def _big(self):
        self.resize(775,780)
    def _small(self):
        self.resize(775,340)

    def start(self):
        import sys
        if not QtWidgets.QApplication.instance():
            app = QtWidgets.QApplication(sys.argv)
        else:
            app = QtWidgets.QApplication.instance()
        app.aboutToQuit.connect(app.deleteLater)
        VolatilityManager = QtWidgets.QMainWindow()
        ui = MainWindow()
        ui.setupUi(VolatilityManager)
        VolatilityManager.show()
        sys.exit(app.exec_())


if __name__ == "__main__":
    mw = MainWindow()
    mw.start()

1 Ответ

0 голосов
/ 21 мая 2018

Назовите свой метод resize () как-нибудь иначе, чтобы он не перекрывал метод QMainWindow.

import sys
from PyQt5 import QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        layout = QtWidgets.QVBoxLayout()
        widget = QtWidgets.QWidget(self)
        self.setCentralWidget(widget)
        widget.setLayout(layout)

        self.expand_btn = QtWidgets.QPushButton('Expand', self)
        self.contract_btn = QtWidgets.QPushButton('Contract', self)
        layout.addWidget(self.expand_btn)
        layout.addWidget(self.contract_btn)

        self.expand_btn.clicked.connect(self._expand)
        self.contract_btn.clicked.connect(self._contract)

    def _expand(self):
        self.resize(775,780)
    def _contract(self):
        self.resize(775,380)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    form = MainWindow()
    form.show()
    app.exec_()
...