Неизменность размеров Основного Окна PyQt5

Рейтинг: 2Ответов: 2Опубликовано: 10.02.2023

Как внутри класса основного окна PyQt5 сделать это окно - НЕИЗМЕННЫМ по размерам?


Update:

import sys 
from PyQt5.QtWidgets import QApplication, QWidget


class MainWindow(QWidget): 
    def int__(self): 
        super().__init__()
        
        self.setFixedSize(500, 200)        # ((1) ЭТО - НЕ РАБОТАЕТ !!!) 

        
if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    w = MainWindow() 
    w.setWindowTitle('** Title **') # 
#    w.setFixedSize(500, 200)              # ((2) СНАРУЖИ! - РАБОТАЕТ !!!) 
    w.show() 
    sys.exit(app.exec_())

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

Ответы

▲ 1Принят

Да, можно.

QtWidgets.QWidget.setFixedSize(w, h)

Устанавливает ширину виджета в w и высоту в h.


Update:

flags Qt::WindowFlags используется для указания различных свойств оконной системы для виджета.
Они довольно необычны, но необходимы в нескольких случаях. Некоторые из этих флагов зависят от того, поддерживает ли их основной оконный менеджер.
...

Существует также ряд флагов, которые можно использовать для настройки внешнего вида окон верхнего уровня.
Они не влияют на другие окна:

Qt::MSWindowsFixedSizeDialogHint

Дает окну тонкую диалоговую границу в Windows.
Этот стиль традиционно используется для диалогов фиксированного размера.

import sys 
from PyQt5.Qt import *


class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
          
        self.setWindowFlags(
            Qt.WindowCloseButtonHint | 
            Qt.MSWindowsFixedSizeDialogHint
        )
        self.setFixedSize(500, 200)

        self.layout = QHBoxLayout(self)
        self.layout.addWidget(
            QLabel('Попробуйте изменить размеры окна.'), 
            alignment = Qt.AlignCenter
        )
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setFont(QFont("Bahnschrift Light", 18))
    w = MainWindow()
    w.setWindowTitle("** Title ** setFixedSize(500, 200) ")
    w.setWindowIcon(QIcon("Qt.png"))
    w.show()
    sys.exit(app.exec_())

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

▲ 0

Большое спасибо ребята! Я в общем-то получил ответ на свой вопрос (как устанавливать и переустанавливать ФИКСИРОВАННЫЕ размеры Основного Окна приложения). Извините, я еще очень плохо ориентируюсь на сайте и даже не знаю как отметить Ваш ответ, как Правильный.

import sys
from PyQt5.Qt import *


class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        # (изменение - ФИКСИРОВАННОГО Размера Основного Окна Приложения)
        self.set_fixed_main_window_sizes(500, 200)

        # (.....)
        self.layout = QVBoxLayout(self)
        self.layout.addWidget(
            QLabel('Попробуйте изменить размеры окна.'),
            alignment=Qt.AlignCenter
        )
        btn = QPushButton(' Change Fixed Sizes ')
        btn.clicked.connect(lambda: self.set_fixed_main_window_sizes(300, 150))
        self.layout.addWidget(btn)

    # (изменение - ФИКСИРОВАННОГО Размера Основного Окна Приложения)
    def set_fixed_main_window_sizes(self, width, height):
        print(f'width: {width},  height: {height}')  # .....
        self.setWindowFlags(
            Qt.WindowCloseButtonHint |
            Qt.MSWindowsFixedSizeDialogHint
        )
        self.setFixedSize(width, height)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setFont(QFont("Bahnschrift Light", 18))
    w = MainWindow()
    w.setWindowTitle("** Title ** setFixedSize(500, 200) ")
    w.setWindowIcon(QIcon("Qt.png"))
    # w.show()
    sys.exit(app.exec_())

Я хотел научиться устанавливать размеры Основного Окна приложения - НЕИЗМЕННЫМИ. А потом, если возникнет необходимость, переустанавливать их и снова делать НЕИЗМЕННЫМИ. Теперь я знаю, как это сделать. Это делает метод класса Основного Окна приложения - set_fixed_main_window_sizes