Шаг 87.
Библиотека PyQt5.
Размещение компонентов в окнах. Класс QSizePolicy

    На этом шаге мы рассмотрим назначение этого класса.

    Если в вертикальный контейнер большой высоты добавить надпись и кнопку, то кнопка займет пространство, совпадающее с рекомендуемыми размерами (которые возвращает метод sizeHint()), а под надпись будет выделено все остальное место. Управление размерами компонентов внутри контейнера определяется правилами, установленными с помощью класса QSizePolicy. Установить эти правила для компонента можно с помощью метода setSizePolicy(<QSizePolicy>) класса QWidget, а получить их - с помощью метода sizePolicy().

    Создать экземпляр класса QSizePolicy (он определен в модуле QtWidgets) можно следующим способом:

  <Объект> = QSizePolicy ( [<Правило для горизонтали>,
                        <Правило для вертикали>[, <Тип компонента>]])

    Если параметры не заданы, то размер компонента должен точно соответствовать размерам, возвращаемым методом sizeHint(). В первом и втором параметрах указывается один из следующих атрибутов класса QSizePolicy:

    Изменить правила управления размерами уже после создания экземпляра класса QSizePolicy позволяют методы setHorizontalPolicy(<Правило для горизонтали>) и setVerticalPolicy(<Правило для вертикали>).

    С помощью методов setHorizontalStretch(<Фактор для горизонтали>) и setVerticalStretch(<Фактор для вертикали>) можно указать фактор растяжения. Чем больше указанное значение относительно значения, заданного в других компонентах, тем больше места будет выделяться под компонент. Этот параметр можно сравнить с жесткостью пружины.

    Можно указать, что минимальная высота компонента зависит от его ширины. Для этого необходимо передать значение True в метод setHeightForWidth(<Флаг>). Кроме того, следует в классе компонента переопределить метод heightForWidth(<Ширина>) - переопределенный метод должен возвращать высоту компонента для указанной в параметре ширины.

    На следующем шаге мы рассмотрим объединение компонентов в группу.




Предыдущий шаг Содержание Следующий шаг