Пример табличной компоновки

Программа-пример table.py создаёт окно с тремя кнопками, используя таблицу 2х2. Две первые кнопки находятся в верхней строке. Третья кнопка (Выход) находится на нижней строке, занимая два столбца. Рисунок 4.4, “Размещение таблицей” показывает получаемое окно:

Рисунок 4.4. Размещение таблицей

Packing using a Table

Здесь исходный код:

#!/usr/bin/env python
# --*-- coding:utf-8 --*--
# example table.py
 
import pygtk
pygtk.require('2.0')
import gtk
 
class Table:
    # Наш callback.
    # Данные передаваемые этому методу выводятся в stdout
    def callback(self, widget, data=None):
        print "Привет снова - %s была нажата" % data
 
    # Этот callback завершает программу
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False
 
    def __init__(self):
        # Создаём новое окно
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
 
        # Устанавливаем заголовок окна
        self.window.set_title("Table")
 
        # Устанавливаем обработчик для delete_event, который немедленно
        # Завершает работу GTK.
        self.window.connect("delete_event", self.delete_event)
 
        # Устанавливаем границу для окна
        self.window.set_border_width(20)
 
        # Создаём таблицу 2х2
        table = gtk.Table(2, 2, True)
 
        # Размещаем таблицу в главном окне
        self.window.add(table)
 
        # Создаём первую кнопку
        button = gtk.Button("кнопка 1")
 
        # По нажатии кнопки мы вызываем метод "callback"
        # с указателем на "кнопка 1" в виде аргумента
        button.connect("clicked", self.callback, "кнопка 1")
 
 
        # Вставляем кнопку 1 в верхнюю левую ячейку таблицы
        table.attach(button, 0, 1, 0, 1)
 
        button.show()
 
        # Создаём вторую кнопку
 
        button = gtk.Button("кнопка 2")
 
        # По нажатию кнопки мы вызываем метод "callback"
        # с указателем на "кнопка 2" как аргумент
        button.connect("clicked", self.callback, "кнопка 2")
        # Вставляем кнопку 2 в верхнюю правую ячейку таблицы.
        table.attach(button, 1, 2, 0, 1)
 
        button.show()
 
        # Создаём кнопку "Выход"
        button = gtk.Button("Выход")
 
        # Когда кнопка нажата, мы вызываем функцию main_quit
        # и программа завершает свою работу
        button.connect("clicked", lambda w: gtk.main_quit())
 
        # Вставляем кнопку выхода в 2 нижние ячейки.
        table.attach(button, 0, 2, 1, 2)
 
        button.show()
 
        table.show()
        self.window.show()
 
def main():
    gtk.main()
    return 0       
 
if __name__ == "__main__":
    Table()
    main()

Класс Table определён в строках 9-78. Строки 12-13 определяют метод callback() , который вызывается по клику на любую из двух кнопок. Callback просто выводит в консоль сообщение, включающее название нажатой кнопки.

Строки 16-18 определяют метод delete_event(), который вызывается при закрытии окна оконным менеджером.

Строки 20-78 определяют конструктор __init__() класса Table.  Он создаёт окно (строка 22), устанавливает заголовок окна (строка 25), подключает callback-функцию delete_event() для сигнала “delete_event” (строка 29), и устанавливает ширину границы (строка 32). gtk.Table создаётся в строке 35 и добавляется внутрь окна в строке 38.

Две верхние кнопки создаются в строках 41 и 55, их сигналы “clicked” подключаются к методу callback() в строках 45 и 59, и вкладываются в первую строку таблицы (строки 49 и 61). Строки 66-72 создают кнопку “Выход”, подключают её сигнал “clicked” к функции main_quit() и вкладываются в таблицу, во вторую строку.


Предыдущая страница На уровень выше  Следующая страница
4.4. Размещение таблицей К оглавлению  Глава 5. Краткий обзор виджетов

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

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

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