Шаг 79.
Библиотека PyQt5.
Размещение компонентов в окнах. Абсолютное позиционирование

    На этом шаге мы рассмотрим пример использования такого позиционирования.

    Прежде чем изучать контейнеры, рассмотрим возможность абсолютного позиционирования компонентов в окне. Итак, если при создании компонента указана ссылка на родительский компонент, то он выводится в позицию с координатами (0, 0). Иными словами, если мы добавим несколько компонентов, то все они отобразятся в одной и той же позиции, наложившись друг на друга. Последний добавленный компонент окажется на вершине этой кучи, а остальные компоненты станут видны лишь частично или вообще не видны. Размеры добавляемых компонентов будут соответствовать их содержимому.

    Для перемещения компонента можно воспользоваться методом move(), а для изменения размеров - методом resize(). Выполнить одновременное изменение позиции и размеров позволяет метод setGeometry(). Все эти методы, а также множество других, позволяющих изменять позицию и размеры, мы уже рассматривали в шагах 26, 27, 28, 29. Если компонент не имеет родителя, то эти методы изменяют характеристики окна, а если при создании компонента указан родительский компонент, то методы изменяют характеристики только самого компонента.

    Для примера выведем внутри окна надпись и кнопку, указав позицию и размеры для каждого компонента.

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Абсолютное позиционирование")
window.resize(300, 120)
label = QtWidgets.QLabel("Текст надписи", window)
button = QtWidgets.QPushButton("Текст на кнопке", window)
label.setGeometry(10, 10, 280, 60)
button.resize(280, 30)
button.move(10, 80)
window.show()
sys.exit(app.exec_())
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 1.


Рис.1. Результат работы приложения

    Абсолютное позиционирование имеет следующие недостатки:

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




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