Управление расположением виджетов
Важной частью программирования является управление расположением элементов. Управление расположением это то, как мы размещаем виджеты на форме. Тут есть два пути: использование абсолютного позиционирования (absolute positioning) или же использование классов расположения (layout classes). Абсолютное позиционирование #!/usr/bin/python class Absolute(QtGui.QWidget): self.setWindowTitle('Communication') label = QtGui.QLabel('Couldn\'t', self) label = QtGui.QLabel('care', self) label = QtGui.QLabel('less', self) label = QtGui.QLabel('And', self) label = QtGui.QLabel('then', self) label = QtGui.QLabel('you', self) label = QtGui.QLabel('kissed', self) label = QtGui.QLabel('me', self) self.resize(250, 150) app = QtGui.QApplication(sys.argv) Мы просто вызываем метод move() для изменения положения виджетов, в нашем случае это QLabel. Мы располагаем их согласно координатам X и Y. Начало системы координат находится в левом верхнем углу окна. Координата X растёт справа налево, а Y сверху вниз. Box Layout (не придумал перевода) #!/usr/bin/python import sys class BoxLayout(QtGui.QWidget): self.setWindowTitle('box layout') ok = QtGui.QPushButton("OK") hbox = QtGui.QHBoxLayout() vbox = QtGui.QVBoxLayout() self.setLayout(vbox) self.resize(300, 150) app = QtGui.QApplication(sys.argv)
Здесь мы создаём две кнопки QPushButton. hbox = QtGui.QHBoxLayout() Создаём горизонтальную раскладку и добавляем фактор растяжения для обоих кнопок. vbox = QtGui.QVBoxLayout() Создаём верктикальную раскладку. self.setLayout(vbox) И в конце устанавливаем главную раскладку для окна. QGridLayout #!/usr/bin/python import sys class GridLayout(QtGui.QWidget): self.setWindowTitle('grid layout') names = ['Cls', 'Bck', '', 'Close', '7', '8', '9', '/', for i in names: self.setLayout(grid) app = QtGui.QApplication(sys.argv) В нашем примере, мы создаём таблицу кнопок. Одну ячейку оставляем пустой, добавляя один виджет QLabel. grid = QtGui.QGridLayout() Здесь мы создаём раскладку таблицей. if j == 2: Чтобы добавить виджет в таблицу мы должны вызвать метод addWidget(), передав в качестве аргументов виджет, а также номера строки и столбца. Виджеты могут занимать несколько строк или столбцов и в следующем примере мы покажем это. #!/usr/bin/python import sys class GridLayout2(QtGui.QWidget): self.setWindowTitle('grid layout') title = QtGui.QLabel('Title') titleEdit = QtGui.QLineEdit() grid = QtGui.QGridLayout() grid.addWidget(title, 1, 0) grid.addWidget(author, 2, 0) grid.addWidget(review, 3, 0) self.setLayout(grid) app = QtGui.QApplication(sys.argv)
Создаём раскладку таблицей и указываем расстояние между виджетами. grid.addWidget(reviewEdit, 3, 1, 5, 1) Если мы добавляем виджет в раскладку, мы можем указать сколько строк или столбцов он объединяет. В нашем случае reviewEdit объединяет 5 строк.
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (325)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |