Pytanie Z jakiego pakietu narzędziowego powinienem korzystać w Pygame? [Zamknięte]


Tworzę grę, która musi być w stanie wyskoczyć z elementów GUI na powierzchni pygame. To Pytanie nie jest tym, czego chcę, ponieważ wxPython obchodzi powierzchnię SDL, a nie w niej. Do tej pory widziałem tylko ocemp, pgu, i GooeyPy w tej przestrzeni problemowej.

  • Ocemp jest olbrzymi i kuszący. Wspomina o Pythonie 2.3, a najnowszy plik, który znalazłem podczas szybkiego przeglądania repozytorium cvs miał 2 lata.
  • Nie mogłem zmusić GooeyPy do pracy (chociaż nie starałem się bardzo ciężko, jaja i Debian nie są przyjaciółmi) i v0.2 został ostatnio zaktualizowany w lutym 2009 roku.
  • Pracowałem z pgu, ale wygląda na to, że nie został on utrzymany (ostatnia aktualizacja 11/2009 i oryginalny opiekun porzucił) i zaczyna pokazywać swój wiek. Używa klas starego stylu i rzuca wyjątki.

Więc moje pytanie do ciebie, SO, jest następujące: Jakiego zestawu narzędzi gui powinienem użyć, aby zrobić ładne klikalne przyciski wyskakujące w twoich aplikacjach Pygame? Czy są jakieś aktywne projekty?

Edytuj, wrzesień 2011 r

Wygląda na to, że PGU wciąż jest utrzymywane. Ostatnie zatwierdzenia pochodzą sprzed 4 dni.


12
2017-07-27 11:42


pochodzenie




Odpowiedzi:


Nie jestem świadomy żadnego pygame gui, ale nie powinno być strasznie ciężko toczyć własne (i hej, może zrobić to open source!)

Jeśli po prostu robisz kilka prostych przycisków, możesz użyć GIMP-a lub Photoshopa lub czegoś innego do zrobienia dwóch (lub trzech) obrazów - przycisku upurzenia, wznoszenia i możliwego zawisu, a następnie możesz napisać własną pętlę zdarzeń / handler zrób coś takiego:

  1. Zdobądź pozycję myszy
  2. Czy kursor myszy znajduje się nad dowolnym z przycisków (bez naciskania przycisków)?
  3. Wyświetl obraz na zaworze
  4. Czy mysz jest nad przyciskiem i kliknięty jest przycisk myszy?
  5. Zdarzenie pożaru powiązane z tym przyciskiem
  6. Zobacz 1

To trochę uproszczone, ale powinno przynajmniej dać ci punkt wyjścia (jeśli nikt nie ma żadnych bibliotek GUI pygame)


2
2017-07-27 12:36



Tego właśnie próbowałem uniknąć. Wolę wziąć istniejącą bibliotekę, taką jak pgu (na licencji LGPL) i zaktualizować ją. To 40 plików źródłowych (nie licząc dokumentacji) i około 7000 linii kodu Pythona. - nmichaels
Jest to również możliwe - nigdy nie używałam pgu, więc nie mam pojęcia, jak bardzo jest on zaawansowany - ale jeśli już wykonuje dużo wstępnej pracy, masz wszelkie powody, by ją aktualizować. Zakładając, że te 7000 linii to i tak dobre linie;) - Wayne Werner
Tak, myślę, że mogę to zrobić, zakładając, że StackOverflow nie doda żadnych magicznych danych do równania. - nmichaels
Jednak pgu to nie tylko GUI. Posiada również (IIRC) 3 różne silniki dachówek i kilka innych zastosowań. Więc nie wszystkie te linie są GUI. - The Communist Duck


Pomimo tego, że jest stary, naprawdę nie musisz mieć biblioteki dla niego, wystarczy użyć ikonki. W przypadku etykiet możesz wziąć sprite'a i nadać mu czcionkę do renderowania i takie. Dla przycisków dziedziczy etykietę i dodaje stan aktywny, aby wykryć zmiany i spowodować coś innego. A scroller działa tak samo jak przycisk i po prostu zmienia etykietę lub coś wartościowego


2
2017-11-17 14:26





Albow z wiki Pythona http://wiki.python.org/moin/PythonGameLibraries


1
2018-01-05 14:58





Zobacz także odpowiedzi na: Jaki jest najlepszy sposób dodania GUI do aplikacji Pygame?

W szczególności, jeśli ktoś chciałby skorzystać z DavesGUI, mojego zestawu narzędzi GUI dla wersji beta gry PyPame, wyślij mi e-mail. Na końcu adresu znajduje się link do mojego adresu e-mail moja odpowiedź.


1
2017-10-24 00:27





Stworzyłem funkcję, której możesz używać wewnątrz pygame bez importowania dodatkowych bibliotek.

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

Wywołujesz funkcję w ten sposób (korzystam z menu jako przykładu).

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

Następnie kontynuowałbyś swoje wyniki.

Działa to przez wzięcie współrzędnych prostokąta i porównanie położenia myszy do wnętrza prostokąta i jest prawdziwe, jeśli klikną właściwy przycisk i znajdą się wewnątrz prostokąta. Mam nadzieję że to pomoże.


0
2017-09-16 23:13





Zgadzam się z milleja46, że nie używam gui na co dzień,

Zamiast tego znalazłem 2 proste programy menu podręcznego:

wyrafinowane menu: http://code.google.com/p/simple-pygame-menu/

proste okno podręczne: Jak określić, co faktycznie się dzieje, gdy kliknięto Tak / Nie z ctypami MessageBoxW?


0
2017-12-16 23:49