Как разрешить изменение размеров окна в 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()

