Seite 1 von 1
Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 15:06
von PPGProductions
Hi,
ich bin gerade dabei ein Spiel in Python zu programmieren. Vom Spiel bin ich allerdings noch ein bisschen weg, ich arbeite momentan an einem Menü. Allerdings weiß ich nicht wirklich wie man es anstellt, durch einen Klick (mit dem linken Mauszeiger) auf meinen erstelllten Menübutton ein bestimmtes Ereignis auszuführen. Das heißt: ich möchte, dass wenn der Mauszeiger über dem Button ist und ich einen Linksklick mache, etwas ausführen. Aber wie kann ich dem Mauszeiger mitteilen, wo sich der Button befindet und dann freigeben, dass bei einem Klick etwas passiert?
Wie man bei einem normalen Mausklick (d.h. über der gesammten fläche, nicht nur über dem button) etwas ausführt habe ich schon gemacht, das sieht dann so aus: (funktioniert so weit auch

)
Ich hoffe ihr könnt mir weiter helfen, da mein Spiel/Menü in Pygame so ziemlich auf einem Mouseeffect aufbaut!
Screenshot

Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 15:09
von /me
PPGProductions hat geschrieben:Aber wie kann ich dem Mauszeiger mitteilen, wo sich der Button befindet und dann freigeben, dass bei einem Klick etwas passiert?
Umgekehrt. Bei einem Klick stellst du fest, ob du in dem Bereich bist auf den du den Button gemalt hast und reagierst entsprechend.
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 15:18
von deets
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 15:28
von PPGProductions
nee sry, das mit dem PIG und PUG hilft mir auch nicht weiter, da ich das Ganze lieber manuell programmieren möchte und nicht durch einen Generator oder ähnlichem.
Vielleicht kann mir ja noch jemand einen anderen Tipp geben, oder was am besten wäre einen beispielcode.
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 15:35
von Xynon1
Dein Button besteht doch bestimmt aus einem pygame.Surface und damit sollte es ein pygame.Rect beinhalten, dies hat eine Methode "collidepoint()" und dein "event" hat bei MOUSEBUTTONDOWN ein "pos"-Attribute. Nun noch 1 und 1 zusammen zählen, hier nochmal lesen:
http://www.pygame.org/docs/ref/rect.htm ... llidepoint und dann sollte man es rausbekommen haben.
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 15:58
von deets
PPGProductions hat geschrieben:nee sry, das mit dem PIG und PUG hilft mir auch nicht weiter, da ich das Ganze lieber manuell programmieren möchte und nicht durch einen Generator oder ähnlichem..
PIG ist ein Generator, aber PUG "nur" eine GUI. Wenn du natuerlich darauf bestehst, das alles selbst zu erfinden

Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 16:10
von Xynon1
@deets
Für ein simples Menü, braucht es nun wirklich nicht viel. Und Buttons, Checkbuttons und Radiobuttons sind schnell gebaut. Aber Slider, ListBox und Konsorten werden dann schon schwieriger. Das schlimmste sind dann aber die Positionierung (zumindest, wenn man wie ich ein Abneigung gegen absolute Positionierungen hat), dennoch solange diese Grenze nicht erreicht ist, kann man es sich in pygame auch selber basteln.
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 17:43
von PPGProductions
OK, also ich hab das jetzt so verstanden, dass ich quasi ein Rechteck mache und das dann über meinen Button gelegt wird. Und wie muss ich das dann in mein Programm einbinden?
Code: Alles auswählen
Rect.collidepoint(x, y):
return bool
Rect.collidepoint((x,y)):
return bool
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 19:11
von Xynon1
Die Grundlagen von Python und das arbeiten mit einer Dokumentation sind dir aber geläufig, oder?
Du "blittest" doch dein Button als Bild auf einen "pygame.Surface", bei dem Stand würde ich sogar sagen auf direkt auf den Screen welchen du bei "pygame.display.set_mode" geliefert bekommst. Jedes Surface, also auch Bilder die du über "pygame.image.load" instanzierst, haben eine Methode ".get_rect()". Diese muss du Aufrufen, dann erhälts du ein "pygame.Rect", dieses hat dann die "collidepoint()"-Methode wo du das Event-Attribute "event.pos" in der "MOUSEBUTTONDOWN" Abfrage übergibst. Das Ergebnis ist ein Wahrheitswert und anhand diesen weißt du ob dein Bild angeklickt wurde.
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 19:57
von PPGProductions
Tut mir leid, allzu gut kenne ich mich mit Python bzw. Pygame leider nicht aus, ich kenne mich mit den Grundbefehlen von Python aus aber mit Pygame direkt habe ich leider noch nicht so viel erfahrung,
ich weis zum Beispiel nicht, wie ich die Methode ".get_rect()" aufrufen kann. könnt ihr mir vielleicht einen Link schicken, damit ich mir iwo das mit den Methoden und events anschauen kann?
Vielleicht kann ja mal noch jemand einen Beispielcode erstellen, da ich momentan nicht ganz weis wo ich anfangen soll mit dem ".get_rect()" und mit "pygame.Rect" usw... wenn ich dann so eine Beispielvorlage hätte, (muss ja nix großartiges sein^^) weis ich wenigstens wo ich anfangen muss und wie das funktioniert.
Re: Pygame Maus Klick auf Button
Verfasst: Mittwoch 13. April 2011, 21:51
von /me
PPGProductions hat geschrieben:ich weis zum Beispiel nicht, wie ich die Methode ".get_rect()" aufrufen kann. könnt ihr mir vielleicht einen Link schicken, damit ich mir iwo das mit den Methoden und events anschauen kann?
http://www.pygame.org/docs/ref/surface. ... e.get_rect
Fangen wir doch mal vorne an, dann kann man die Logik dahinter besser erklären, da wir dann auf deinem Wissensstand aufsetzen. Wie, also mit welchem Code, bringst du denn im Moment den Button auf den Bildschirm?