GUI: принципы организации. GUI+PyGame?
- Асинхронная организация GUI:
- собственные обработчики событий
- «корневое окно» как источник внешнего mainloop
- обратный вызов процедур
- Сложности программирования GUI:
- Очень много настроек (геометрия, цвета и картинки, варианты поведения…)
Невозможно совместить два верхних mainloop (например, Tk и PyGame)
Пример организации GUI на PyGame: Simple Game Code
Домашнее задание
Посмотреть документацию по SGC и примеры из состава дистрибутива (каталог examples в архиве)
Научиться запускать примеры (должен срабатывать оператор import sgc):
Вариант 1: скопировать каталог sgc из архива в каталог с примерами (то же самое для собственных программ)
Вариант 2: установить модуль командой python setup.py install после распаковки архива
Модифицировать программу рисования графика произвольной функции так, чтобы она использовала sgc
Обратите внимание, что «классический» диалог ввода состоит минимум из двух виджетов: текстовой строки (label, для «подсказки») и поля текстового ввода (input), но в SGC виджет InputBox включает в себя оба.
Ещё обратите внимание на то, что в SGC вместо pygame.display.set_mode() вызывается sgc.surface.Screen(); при этом результат set_mode() (surface для рисования) помещается в поле image создаваемого объекта. Таким образом, вместо
screen = pygame.display.set_mode(size)
надо использовать что-то вродеroot = sgc.surface.Screen(size) screen = root.image
Модифицировать ещё какую-нибудь программу, требующую ввода.
Что-то украшения кнопок не очень красиво в SGC выглядят… Может, их улучшить? Кода-то не слишком-то много, а кусок, отвечающий за рисование рамочек и стенок, в каждом виджете вообще небольшой.
Условные обозначения
— тема по Linux
— тема повышенной сложности
— теоретическое задание
— тема для самостоятельного изучения