Фиксатор (gtk.Fixed)

Контейнер 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” показывает окно программы:

Рисунок 10.2. Пример контейнера Fixed

Fixed Example

Исходный код для 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)

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>