Учебник PyGTK 2.0

 Сергей Завгородний

Григорий Крамаренко

Версия 0.1
1 декабря 2011

Резюме

Это учебное руководство описывает использование Python модулей, использующих интерфейс PyGTK. Идея перевода такой литературы, не имеющей аналогов в русифицированных печатных и Интернет-изданиях была основана на желании  помочь тем юным, и не очень, программистам, которые желают изучить и начать писать качественные приложения на этом замечательном кроссплатформенном фреймворке, но не обладают достаточным знанием английского языка, необходимым для самостоятельного изучения оригинальных руководств.

Изначально мы обратились в несколько фирм, занимающихся переводами технической литературы, и даже имели некое количество финансов, которыми могли расплатиться за их работу. Многие, увидев оригинальный текст просто отказались от работы, остальные выставили счета, в десятки раз превышающие имеющийся бюджет. И, согласно известной поговорке – “Если что-то нужно сделать хорошо – сделай это сам!”, мы приступили к написанию вольного перевода.

Почему вольного? Потому, что материал в изобилии содержит технические термины, а жёсткий перевод лишь усугубил бы восприятие текста. Поэтому первым “проходом” для нас являлся, собственно, перевод, а вторым – его художественная корректировка и дополнения. Поэтому этот учебник в некоторых местах ощутимо отличается от руководства Джона Финли.

Подытоживая резюме, хотелось бы отметить, что мы провели множество часов за переводом, а также тестированием и исправлением приложений, представленных в тексте и по ссылкам. Поэтому если у Вас возникло желание поблагодарить нас за этот титанический труд, то Вы можете пожертвовать любое количество средств на счёт проекта “PyGTK на русском!” в форме Яндекс-Денег (указана внизу страницы), чтобы мы могли сделать что-нибудь приятное нашим близким, ведь именно они создавали нам благоприятную обстановку для работы. И, возможно, Ваша благодарность подвигнет нас на новые творения.


Оглавление

1. Введение
1.1. Инструменты для исследования PyGTK
2. Начало работы
2.1. “Привет, Мир” в PyGTK
2.2. Теория сигналов и обратных вызовов
2.3. События
2.4. Пошаговый разбор “Привет, Мир”
3. Двигаемся дальше
3.1. Ещё про обработчики сигналов
3.2. Модернизация “Привет, Мир”
4. Компоновка виджетов (gtk.HBox, gtk.VBox)
4.1. Теория размещающих коробок
4.2. Подробнее о коробоках
4.3. Демонстрационная программа компоновки
4.4. Использование таблиц для компоновки
4.5. Пример табличной компоновки
5. Краткий обзор виджетов
5.1. Иерархия виджетов
5.2. Виджеты без окон
6. Кнопки
6.1. Обычные кнопки (gtk.Button)
6.2. Выключатели (gtk.ToggleButton)
6.3. Флажки (gtk.CheckButton)
6.4. Переключатели (gtk.RadioButton)
7. Регулятор (gtk.Ajustment)
7.1. Создание регулятора
7.2. Лёгкий способ использования регуляторов
7.3. Регулятор изнутри
8. Виджеты регулировки диапазона
8.1. Полосы прокрутки (gtk.HScrollbar, gtk.VScrollbar)
8.2. Горизонтальная и вертикальная шкала (gtk.HScale, gtk.VScale)
8.2.1. Создание шкалы
8.2.2. Методы
8.3. Общие методы
8.3.1. Настройка политики обновления
8.3.2. Получение и настройка регуляторов
8.4. Привязка к клавиатуре и мыши
8.5. Пример работы виджетов регулировки диапазона
9. Разнообразные виджеты
9.1. Метка (gtk.Label)
9.2. Стрелка (gtk.Arrow)
9.3. Всплывающие подсказки (gtk.Tooltips)
9.4. Индикатор прогресса (gtk.ProgressBar)
9.5. Диалог (gtk.Dialog)
9.6. Изображение (gtk.Image)
9.6.1. Битовая графика Pixmap и Bitmap
9.7. Линейки (gtk.HRuler, gtk.VRuler)
9.8. Строка состояния (gtk.StatusBar)
9.9. Поле ввода текста (gtk.Entry)
9.10. Кнопка-счётчик (gtk.SpinButton)
9.11. Комбинированный список (gtk.Combo)
9.12. Календарь (gtk.Calendar)
9.13. Выбор цвета (gtk.ColorSelection)
9.14. Выбор файла (gtk.FileSelection)
9.15. Выбор шрифта (gtk.FontSelectionDialog)
10. Контейнеры
10.1. Коробка событий (gtk.EventBox)
10.2. Выравнивание (gtk.Alignment)’
10.3. Фиксатор (gtk.Fixed)
10.4. Макет (gtk.Layout)
10.5. Рамка (gtk.Frame)
10.6. Перспектива (gtk.AspectFrame)
10.7. Делимое окно (gtk.HPaned, gtk.VPaned)
10.8. Окно просмотра (gtk.Viewport)
10.9. Окно прокрутки (gtk.ScrolledWindow)
10.10. Группы кнопок (gtk.HButtonBox, gtk.VButtonBox)
10.11. Панель инструментов (gtk.Toolbar)
10.12. Вкладки (gtk.Notebook)
10.13. Встраивание процессов (gtk.Plug, gtk.Socket)
10.13.1. Штепсели (Plugs)
10.13.2 Гнёзда (Sockets)

11. Меню (gtk.Menu)

11.1. Ручное создание меню
11.2. Пример ручного создания
11.3. Использование фабрики элементов
11.4. Пример использования фабрики

12. Область рисования (gtk.DrawingArea)

12.1. Контекст графики (gtk.gdk.GC)
12.2. Методы рисования

13. Текстовый фреймворк (gtk.TextView)

13.1. Обзор фреймворка
13.2. Представление текста 
13.3. Тестовый буфер (gtk.TextBuffer)
13.3.1. Информация о состоянии буфера
13.3.2. Создание текстовых каналов (gtk.TextIter)
13.3.3. Вставка, правка и удаление текста
13.3.4. Немного о маркировке текста (gtk.TextMark)
13.3.5. Создание и применение текстовых признаков (gtk.TextTag)
13.3.6. Вставка изображений и других виджетов
13.4. Текстовые каналы (gtk.TextIter)
13.4.1. Атрибуты канала
13.4.2. Атрибуты текста на канале
13.4.3. Копирование канала
13.4.4. Изменение текста и объектов
13.4.5. Проверка состояния на канале
13.4.6. Проверка расположения в тексте
13.4.7. Перемещение по тексту
13.4.8. Перемещение в определённое место
13.4.9. Поиск в тексте
13.5. Маркировка текста (gtk.TextMark)
13.6. Признаки текста и таблиц
13.6.1. Текстовые признаки
13.6.2. Текстовые признаки таблиц
13.7. Пример TextView

14. Фреймворк представления структурированных данных (gtk.TreeView)

14.1. Обзор фреймворка
14.2. Интерфейс модели дерева (gtk.TreeModel) и хранение данных (gtk.*Store)
14.2.1. Введение
14.2.2. Создание объектов TreeStore и ListStore
14.2.3. Обращение к рядам в модели дерева
14.2.4. Добавление рядов
14.2.5. Изменение рядов
14.2.6. Управление данными в рядах
14.2.7. Поддержка протокола Python
14.2.8. Сигналы модели дерева
14.2.9. Сортировка рядов в модели
14.3. Представление данных (gtk.TreeView)
14.3.1. Создание представления
14.3.2. Получение и настройка модели из представления
14.3.3. Установка свойств представления
14.4. Прорисовка ячеек (gtk.CellRenderer)
14.4.1. Обзор
14.4.2. Типы
14.4.3. Свойства
14.4.4. Атрибуты
14.4.5. Привязка произвольной функции к данным из ячейки
14.4.6. Разметка прорисованного текста (gtk.CellRendererText)
14.4.7. Редактирование текста в ячейках
14.4.8. Переключение активности ячеек
14.4.9. Пример редактирования и активации ячеек
14.5. Представление колонок (gtk.TreeViewColumn)
14.5.1. Создание представления колонок
14.5.2. Управление прорисовкой
14.6. Манипуляции с представлениями
14.6.1. Управление колонками
14.6.2. Разворачивание и сворачивание дочерних рядов
14.7. Сигналы представлений
14.8. Выбор ветки дерева (gtk.TreeSelection)
14.8.1. Введение
14.8.2. Режимы выбора
14.8.3. Получение выделенных элементов
14.8.4. Использование функций
14.8.5. Выделение и снятие выделения с элементов
14.9. Действия Drag and Drop в представлениях
14.9.1. Реорганизация
14.9.2. Внешние действия Drag and Drop
14.9.3. Пример действий Drag and Drop в представлении
14.10. Сортировка и фильтрация
14.10.1. Сортировка (gtk.TreeModelSort)
14.10.2. Фильтрация (gtk.TreeModelFilter)
14.11. Типовая модель дерева (gtk.GenericTreeModel)
14.11.1. Обзор типовой модели
14.11.2. Интерфейс
14.11.3. Добавление и удаление рядов
14.11.4. Управление памятью
14.11.5. Другие интерфейсы
14.11.6. Применение типовой модели
14.12. Типовая прорисовка ячеек (gtk.GenericCellRenderer)

15. Новые виджеты в PyGTK 2.2

15.1. Буфер обмена (gtk.Clipboard)
15.1.1. Создание буфера обмена
15.1.2. Использование буфера обмена с Entry, Spinbutton и TextView
15.1.3. Установка данных в буфере обмена
15.1.4. Изменение контента буфера обмена
15.1.5. Пример буфера обмена

16. Новые виджеты в PyGTK 2.4

16.1. Действия и группы действий
16.1.1. Действия (gtk.Action)
16.1.2. Группы действий (gtk.ActionGroup)
16.2. Выпадающие списки
16.2.1. Простой выпадающий список (gtk.ComboBox)
16.2.2. Выпадающий список со строкой ввода (gtk.ComboBoxEntry)
16.3. Кнопки выбора цвета и шрифта
16.3.1. Кнопка выбора цвета (gtk.ColorButton)
16.3.2. Кнопка выбора шрифта (gtk.FontButton)
16.4. Авто-дополнение ввода (gtk.EntryCompletion)
16.5. Экспандер (gtk.Expander)
16.6. Выбор файлов (gtk.FileChooser)
16.7. Конструктор панелей меню и инструментов (gtk.UIManager)
16.7.1. Обзор возможностей
16.7.2. Создание экземпляра конструктора
16.7.3. Добавление и удаление групп действий (gtk.ActionGroup)
16.7.4. XML-определения элементов UI
16.7.5. Добавление и удаление элементов UI
16.7.6. Доступ к элементам как к виджетам UI
16.7.7. Простой пример UIManager
16.7.8. Слияние элементов UI
16.7.9. Сигналы UIManager

17. Недокументированные виджеты

17.1. Метка-ускоритель (gtk.AccelLabel)
17.2. Меню опций (gtk.OptionMenu)
17.3. Пункты меню (gtk.MenuItem)
17.3.1. Флажок меню (gtk.CheckMenuItem)
17.3.2. Переключатель меню (gtk.RadioMenuItem)
17.3.3. Разделитель пунктов меню (gtk.SeparatorMenuItem)
17.3.4. Перемещаемый пункт (gtk.TearoffMenuItem)
17.4. Кривые (gtk.Curve)
17.4.1. Гамма-кривые (gtk.GammaCurve)
17.5. Диалог сообщения (gtk.MessageDialog)

18. Установка атрибутов виджетов

18.1. Методы флагов
18.2. Методы видимого
18.3. Ускорители виджета
18.4. Методы имени
18.5. Стили виджета

19. Таймауты, ввод-вывод и функции Idle

19.1. Таймауты
19.2. Мониторинг ввода-вывода (IO)
19.3. Функции Idle

20. Подробнее о событиях и обработке сигналов

20.1. Методы сигналов
20.1.1. Подключение и разъединение обработчиков
20.1.2. Временная блокировка обработчиков
20.1.3. Посылка и остановка сигналов
20.2. Сбор и распространение сигналов

21. Управление выделением

21.1. Обзор принципов
21.2. Получение выделенного
21.3. Захват выделения

22. Drag-and-drop (DND)

22.1. Обзор
22.2. Свойствка
22.3. Методы
22.3.1. Настройка исходного виджета
22.3.2. Сигналы на исходном виджете
22.3.3. Настройка конечного виджета
22.3.4. Сигналы на конечном виджете

23. Конфигурационные файлы GTK (rc files)

23.1. Функции для конфигурационных файлов
23.2. Формат файлов rc
23.3. Пример конфигурационного файла
24. “Наброски” – простой пример программы для рисования
24.1. Немного о программе “Наброски”
24.2. Обработка событий
24.2.1. Реализация обработки событий
24.3. Виджеты gtk.DrawingArea и gtk.Drawing
25. Подсказки для написания приложений на PyGTK
26. Содействие
27. Благодарности
27.1. Доверенные лица PyGTK
27.2. Доверенные лица оригинального GTK+
28. Лицензионное соглашение на учебник
A. Сигналы объектов GTK
A.1. GtkObject
A.2. GtkWidget
A.3. GtkData
A.4. GtkContainer
A.5. GtkCalendar
A.6. GtkEditable
A.7. GtkNotebook
A.8. GtkList
A.9. GtkMenuShell
A.10. GtkToolbar
A.11. GtkButton
A.12. GtkItem
A.13. GtkWindow
A.14. GtkHandleBox
A.15. GtkToggleButton
A.16. GtkMenuItem
A.17. GtkCheckMenuItem
A.18. GtkInputDialog
A.19. GtkColorSelection
A.20. GtkStatusBar
A.21. GtkCurve
A.22. GtkAdjustment
B. Примеры кода
B.1. scribblesimple.py
C. Лог изменений

Список иллюстаций

2.1. Пример простого окна PyGTK
2.2. Пример программы “Привет, мир!”
3.1. Пример улучшенной программы “Привет, мир!”
4.1. Компоновка: пять вариантов
4.2. Компоновка с Spacing and Padding
4.3. Компоновка виджетов с обратной стороны
4.4. Компоновка с использованием таблиц
6.1. Кнопка с изображением и меткой
6.2. Пример с выключателем
6.3. Пример с флажками
6.4. Пример с переключателем
8.1. Пример с виджетами изменения диапазона
9.1. Пример различных меток
9.2. Пример со стрелками
9.3. Пример всплывающих подсказок
9.4. Пример с индикатором прогресса
9.5. Пример изображений в кнопках
9.6. Пример Pixmap внутри кнопки
9.7. Пример садовой тачки, играющей роль окна
9.8. Пример линеек
9.9. Пример статус-панели
9.10. Пример ввода текста
9.11. Пример с кнопкой-счётчиком
9.12. Пример календаря
9.13. Пример диалога выбора цвета
9.14. Пример выбора файла
9.15. Диалог выбора шрифта
10.1. Пример использования корбки событий
10.2. Пример фиксатора
10.3. Пример макета
10.4. Пример рамки
10.5. Пример перспективы
10.6. Пример делителей окна
10.7. Пример окна прокрутки
10.8. Пример панели инструментов
10.9. Пример вкладок
11.1. Пример меню
11.2. Пример фабрики пунктов меню
12.1. Пример области рисования
13.1. Пример основ отображения текста
13.2. Пример отображения текста
14.1. Пример основ отображения структурированных данных
14.2. Пример прорисовки данных в ячейках и колонках
14.3. Функции прорисовки данных
14.4. Пример отображения списка файлов сиспользованием функций ячеек
14.5. Разметка отображаемого текста
14.6. Редектирование и активация ячеек
14.7. Расширитель стрелок во второй колонке
14.8. Пример Drag and Drop в TreeView
14.9. Пример сортировки TreeModelSort
14.10. Пример визуального фильтра TreeModelFilter
14.11. Пример типовой модели дерева
15.1. Пример программы для буфера обмена
16.1. Пример простого Action
16.2. Пример элементарного Action
16.3. Пример Actions
16.4. Пример ActionGroup
16.5. Элементарный ComboBox
16.6. ComboBox с обёрткой Layout
16.7. Элементарный ComboBoxEntry
16.8. Пример кнопки для выбора цвета
16.9. Пример кнопки для выбора шрифта
16.10. Автодополнение ввода текста
16.11. Пример растяжки
16.12. Пример диалога выбора файла
16.13. Пример простого UIManager
16.14. Пример UIMerge
21.1. Пример получения выделения
21.2. Пример установки выделения
22.1. Пример Drag and Drop
24.1. Пример программы для рисования “Наброски”
24.2. Пример простого наброска

Список таблиц

22.1. Исходящие сигналы виджетов
22.2. Принимаемые сигналы виджетов

История версий

  • Версия 0.1

1 декабря 2011
Вольный перевод английской версии 2.5 PyGTK 2.0 Tutorial(автор: John Finlay) на русский язык.

рублей Яндекс.Деньгами
на счет 41001227928348 (PyGTK на русском!)

Один комментарий

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

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

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