Wie kann man in Pygame Buttons erstellen ?

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Titel lesen :)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Titel lesen :)
Das Leben ist wie ein Tennisball.
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Kann mir das nicht jemand so erklären ?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ganz einfach: Du kannst eine Datenstruktur erstellen (normaler Weise benutzt man dafür eine Klasse), welche folgende Informationen hält:
  • Ein Rect für die geometrische bzw. grafische Repräsentation des Buttons
  • Ein Attribut, welches ein Callable aufnimmt.
Wenn nun ein Mausklick erfolgt, musst Du prüfen, ob dieser innerhalb des Rects erfolgt ist. Falls ja, rufst Du das an den Button übergebene Callable (=Callback) auf. Schon hast Du auf den Klick reagiert. Das nennt man in der Softwareentwicklung übrigens "Observer Pattern".

Wenn Du Dir schon mal andere GUI-Toolkits angeguckt hast, dann kommt Dir das hoffentlich bekannt vor. Bei Qt z.B. nennen sich diese Callbacks "Slots".

Da Du vermutlich mehrere Buttons haben willst, musst Du Dir zusätzlich noch eine Struktur überlegen, in der Du alle Buttons (und ggf. andere UI-Elemente) sammelst. Bei jedem Klick-Event musst Du sie dann alle durchgehen, bis Du entweder ein UI-Element gefunden hast oder eben auch nicht.

Es gibt zig auf pygame aufbauende UI-Libs. Evtl. schaust Du Dir einfach mal eine an und schauhst, wie das ganze dort umgesetzt ist :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten