Контейнер Fixed позволяет вам размещать виджеты в чётко определённой позиции относительно верхнего левого угла окна. Положение виджетов может изменятся динамически.
С виджетом fixed связано всего три вызова:
fixed = gtk.Fixed() fixed.put(widget, x, y) fixed.move(widget, x, y) |
Функция gtk.Fixed() позволяет вам создавать новый контейнер Fixed.
Метод put() помещает виджет в определённое место указанное аргументами x и y.
Метод move() позволяет указанному виджету перемещаться в новое место.
Пример fixed.py показывает использование контейнера Fixed. Рисунок 10.2, “Пример контейнера Fixed” показывает окно программы:
Исходный код для fixed.py:
#!/usr/bin/env python # -*- coding: utf-8 -*- # example fixed.py import pygtk pygtk.require('2.0') import gtk class FixedExample: # Этот callback передвигает кнопку на новую позицию # в контейнере Fixed. def move_button(self, widget): self.x = (self.x+30)%300 self.y = (self.y+50)%300 self.fixed.move(widget, self.x, self.y) def __init__(self): self.x = 50 self.y = 50 # Создаём новое окно window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Fixed Container") # Здесь мы подключаем событие "destroy" к обработчику window.connect("destroy", lambda w: gtk.main_quit()) # Устанавливаем ширину границы окна. window.set_border_width(10) # Создаём контейнер Fixed self.fixed = gtk.Fixed() window.add(self.fixed) self.fixed.show() for i in range(1, 4): # Создаём новую кнопку с меткой "Press me" button = gtk.Button("Press me") # Когда кнопка получает сигнал "clicked" она вызывает # метод move_button(). button.connect("clicked", self.move_button) # Здесь кнопка размещается в контейнере. self.fixed.put(button, i*50, i*50) # Последний шаг - отображаем созданный виджет. button.show() # Отображаем окно. window.show() def main(): # Запускаем основной цикл gtk.main() return 0 if __name__ == "__main__": FixedExample() main()
Предыдущая страница | На уровень выше | Следующая страница |
10.2. Выравнивание (gtk.Alignment) | К оглавлению | 10.4. Макет (gtk.Layout) |