Подтвердить что ты не робот

Какой инструментарий 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 дней назад.

4b9b3361

Ответ 1

Я не знаю ни о каком графическом интерфейсе Pygame, но это не должно быть ужасно трудно свернуть свое собственное (и эй, возможно сделайте это с открытым исходным кодом!)

Если вы просто делаете несколько простых кнопок, вы можете использовать GIMP или Photoshop или что-то еще для создания двух (или трех) изображений - кнопки вверх, вниз и возможного наведения, тогда вы бы написали свой собственный цикл/обработчик событий, который бы сделать что-то вроде этого:

  1. Получить положение мыши
  2. Наведите указатель мыши на какую-либо из кнопок (и ни одна из кнопок не нажата)?
  3. Показать изображение при наведении курсора
  4. Мышь над кнопкой и нажата кнопка мыши?
  5. Событие пожара, связанное с этой кнопкой
  6. Смотрите 1

Это немного упрощено, но это должно, по крайней мере, дать вам отправную точку (если ни у кого больше нет каких-либо библиотек Pygame GUI)

Ответ 2

Несмотря на то, что он старый, вам действительно не нужна библиотека графического интерфейса, вы просто используете спрайты. Для меток вы должны взять спрайт и дать ему шрифт для визуализации и тому подобное. Для кнопок он наследует метку и добавляет активное состояние, чтобы обнаружить изменения и вызвать что-то еще. А скроллер работает так же, как кнопка и просто меняет метку или что-то еще

Ответ 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?