Как разрешить изменение размеров окна в PyQt6

Я делаю приложение на PyQt6 и для запрета изменения размеров окна я использую метод setFixedSize, но сейчас мне надо разрешить это самое изменение.

Как это сделать?

main.py

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Main Window")
        self.setFixedSize(645, 500)

    def button(self):
        # вот здесь мне надо изменить размер окна но у меня это не получается из-за метода setFixedSize

def application_setup():
    app = QApplication(sys.argv)
    app.setStyleSheet(StyleSheet)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    application_setup()

Ответы (1 шт):

Автор решения: S. Nick

void QWidget::setFixedSize(const QSize &s)

Устанавливает минимальный и максимальный размеры виджета равными s, тем самым предотвращая его рост или уменьшение.

Это переопределит ограничения размера по умолчанию, установленные QLayout.

Чтобы удалить ограничения, установите размер QWIDGETSIZE_MAX.

Альтернативно, если вы хотите, чтобы виджет имел фиксированный размер в зависимости от его содержимого, вы можете вызвать QLayout::setSizeConstraint(QLayout::SetFixedSize);

import sys
#from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Main Window")
        self.setFixedSize(645, 500)
        
        self.centralwidget = QtWidgets.QWidget(self)
        self.setCentralWidget(self.centralwidget)

        self.button = QtWidgets.QPushButton(self)
        self.button.setText('Update')
        self.button.clicked.connect(self._button)
        
        self.flag = True

    def _button(self):
        # вот здесь мне надо изменить размер окна но у меня это не получается 
        # из-за метода setFixedSize

        if self.flag:  
        
# или установите новое значение:         
#           self.setFixedSize(800, 300)

# или альтернативно, если вы хотите, чтобы виджет имел фиксированный размер 
# в зависимости от его содержимого, вы можете вызвать 
# QLayout::setSizeConstraint(QLayout::SetFixedSize): 
#           self.layout.setSizeConstraint(QLayout.SetFixedSize)
            
# или удалить ограничения, установите размер QWIDGETSIZE_MAX:  
            self.setFixedSize(16777215, 16777215)
            
        else:
            print(f'{self.size()}') #
            size = self.size()
# или установите новое значение: 
            self.setFixedSize(size)
        
        self.flag = not self.flag


def application_setup():
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    application_setup()

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка