Какой инструментарий GUI я должен использовать с Pygame?
Я делаю игру, которая должна иметь возможность выскакивать элементы графического интерфейса на поверхности пигмеев. Этот вопрос - не то, что я хочу, потому что wxPython распространяется по поверхности SDL, а не внутри нее. До сих пор я видел только ocemp, pgu и GooeyPy в этом проблемном пространстве.
- Ocemp огромный и грубый. В нем упоминается Python 2.3, а новейшему файлу, который я нашел в кратком обзоре репозитория cvs, было 2 года.
- Я не мог заставить GooeyPy работать (хотя я не очень старался; яйца и Debian не друзья), а последняя версия v0.2 была обновлена в феврале 2009 года.
- Я работал с pgu, но он, кажется, не поддерживается (последнее обновление 11/2009 и оригинальный сопровождающий отказался от него), и он начинает показывать свой возраст. Он использует классы старого стиля и генерирует строковые исключения.
Итак, мой вопрос к вам, ТАК, такой: какой инструментарий GUI я должен использовать для того, чтобы в ваших приложениях Pygame появлялись красивые кнопки, которые можно нажимать? Есть ли в активной разработке?
Изменить, сентябрь 2011 г.
Похоже, PGU все еще поддерживается. Последние коммиты от 4 дней назад.
Ответы
Ответ 1
Я не знаю ни о каком графическом интерфейсе Pygame, но это не должно быть ужасно трудно свернуть свое собственное (и эй, возможно сделайте это с открытым исходным кодом!)
Если вы просто делаете несколько простых кнопок, вы можете использовать GIMP или Photoshop или что-то еще для создания двух (или трех) изображений - кнопки вверх, вниз и возможного наведения, тогда вы бы написали свой собственный цикл/обработчик событий, который бы сделать что-то вроде этого:
- Получить положение мыши
- Наведите указатель мыши на какую-либо из кнопок (и ни одна из кнопок не нажата)?
- Показать изображение при наведении курсора
- Мышь над кнопкой и нажата кнопка мыши?
- Событие пожара, связанное с этой кнопкой
- Смотрите 1
Это немного упрощено, но это должно, по крайней мере, дать вам отправную точку (если ни у кого больше нет каких-либо библиотек Pygame GUI)
Ответ 2
Несмотря на то, что он старый, вам действительно не нужна библиотека графического интерфейса, вы просто используете спрайты. Для меток вы должны взять спрайт и дать ему шрифт для визуализации и тому подобное. Для кнопок он наследует метку и добавляет активное состояние, чтобы обнаружить изменения и вызвать что-то еще. А скроллер работает так же, как кнопка и просто меняет метку или что-то еще
Ответ 3
Локоть из питона викиhttp://wiki.python.org/moin/PythonGameLibraries
Ответ 4
Смотрите также ответы на:
Какой лучший способ добавить графический интерфейс в приложение Pygame?
В частности, если кто-то захочет использовать DavesGUI, мой предварительный бета-инструментарий GUI для PyGame, пришлите мне электронное письмо. Там в конце моего ответа есть ссылка на мой адрес электронной почты, там.
Ответ 5
Я создал функцию, которую вы можете использовать внутри pygame без импорта дополнительных библиотек.
def gui(x1, y1, x2, y2, button):
mouseX, mouseY = pygame.mouse.get_pos()
if mouseX >= x1 and mouseX <= x2 and mouseY >= y1 and mouseY <= y2:
if button:
return True
else:
return False
else:
return False
Вы вызываете функцию следующим образом (в качестве примера я использую меню).
topCornerX = #X coordinate of top right corner
topCornerY = #Y coordinate of top right corner
bottomCornerX = #X coordinate of bottom left corner
bottomCornerY = #Y coordinate of bottom left corner
while menu:
for event in pygame.event.get():
mouseLeft, mouseMiddle, mouseRight = pygame.mouse.get_pressed()
if gui(topCornerX, topCornerY, bottomCornerX, bottomCornerY, '''mouseLeft, mouseMiddle, or mouseRight''')
menu = False
Тогда вы продолжите свой вывод.
Это работает, беря координаты прямоangularьника и сравнивая положение мыши с внутренней частью прямоangularьника, и имеет значение True, если они нажимают правильную кнопку и находятся внутри прямоangularьника. Надеюсь это поможет.
Ответ 6
Я согласен с milleja46, что не пользуюсь графическим интерфейсом для некоторых вещей,
Вместо этого я нашел 2 простых всплывающих меню:
сложное меню: http://code.google.com/p/simple-pygame-menu/
простое всплывающее окно: Как указать, что на самом деле происходит при нажатии Yes/No с помощью ctypes MessageBoxW?