Какой лучший способ добавить графический интерфейс в приложение Pygame? - PullRequest
11 голосов
/ 27 января 2010

Есть ли в приложении хорошие графические интерфейсы, поддерживающие поверхности Pygame в качестве виджета?

Если это невозможно или нецелесообразно, какой инструментарий GUI имеет лучший графический компонент? Я хочу, чтобы быстрый рендеринг стал возможен благодаря обертке SDL.

Ответы [ 4 ]

10 голосов
/ 27 января 2010

Не используйте wxPython, очень трудно хорошо работать с Pygame, как описано в разделе GUI вики Pygame.

Прежде всего, Pygame опирается на SDL, что означает, что он может иметь только одно окно за раз. Таким образом, пытаясь реализовать несколько Gtk, Qt, ... экземпляры приложений, которые используют Pygame, это невозможность Второй Проблемная причина в том, что те инструментарий использует свой собственный основной цикл, что, возможно, заставляет вас трубку их события в ваш экземпляр Pygame и наоборот. И упомянуть некоторые другие моменты вкратце: рисование элементы инструментария в окне Pygame невозможно и SDL / pygame Полноэкранный режим будет проблематичным.

Вместо этого выберите любую из библиотек, перечисленных внизу этой страницы. Я сам пользуюсь pgu .

6 голосов
/ 27 января 2010

Взгляните на Колено , ПГУ или Ocemp .

4 голосов
/ 17 января 2011

Albow и Ocemp активно не поддерживаются. Питер Роджерс поддерживает PGU, а Виктор Кам преобразовал большую часть его в Python 3.

Существует 5 наборов инструментов Pygame GUI, которые я пытался запустить под Python 3: Albow, GooeyPy, PGU, pqGUI и sgc. (Я не заставлял GooeyPy работать с Python 3, но другие сделали.)

Я проверил каждого из них через простой счетчик строк кода http://code.activestate.com/recipes/527746-line-of-code-counter/ оценить их размеры:

Вот результаты:

Albow code        min=2810, max=4551    (max = 162% of min)
Albow\demo        min= 453, max= 649

GooeyPy\gooeypy   min=2034, max=3941    (max = 194% of min)
GooeyPy\examples  min= 178, max= 351

pgu\pgu           min=2910, max=7047    (max = 242% of min)
incl. pgu\pgu\gui min=1678, max=4638    (max = 276% of min)
pgu\examples      min= 822, max=2527

pqGUI.py          min=1586, max=1834    (max = 116% of min)
Example.py        min= 178, max= 225

sgc (incomplete)  min= 889, max=1243    (max = 140% of min)

(Я тоже хотел попробовать путин, Шенди Браун, но не смог его найти.)

В каждом случае число "min" больше отражает "размер" набора инструментов, поскольку оно не учитывает пробелы и комментарии.

Когда число "max" очень близко к числу min, это означает, что в коде мало пробелов и мало комментариев. pqGUI иллюстрирует это, потому что у него почти нет комментариев, что очень плохо, потому что (IMO) он создает самые красивые виджеты.

Мне понравился pqGUI, потому что мне нравится внешний вид виджетов, которые он создает, но он не поддерживается и не имеет документов, и я не могу найти автора.

Только два из пяти активно поддерживаются / развиваются: PGU и sgc, а sgc является новым и неполным.

Это делает ПГУ явным лидером.

Dave


P.S. (23.10.2012) - Я создал собственный инструментарий GUI для PyGame. Он основан на виджетах и ​​использует для связи события pygame, поэтому его можно легко перенести в существующую программу pygame, не принимая цикл событий. Он поддерживает формы, кнопки, окна, модальные и немодальные окна сообщений и диалоговые окна, вертикальные меню, поля ввода текста и ползунки (полосы прокрутки). Он плавно обрабатывает перекрывающиеся элементы управления и формы внутри форм.

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

Если, несмотря на эти ограничения, кто-то хочет попробовать его, свяжитесь со мной по электронной почте. Спросите о "DavesGUI". Мой адрес электронной почты здесь: http://www.burtonsys.com/email/

1 голос
/ 27 января 2010

Здесь у вас есть объяснение того, как интегрировать и заставить взаимодействовать wxPython и Pygame.

Лучшим GUI инструментарием, по моему мнению, является wxPython (привязка для wxWidgets), который имеет виджеты GUI практически для всего, включая виджет OpenGL и некоторую работу , также проделанную с SDL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...