gtk.DrawableArea -> clickable Area (und andere fragen..)

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
vIiRuS
User
Beiträge: 16
Registriert: Montag 13. Juli 2009, 16:35

Ich hab gehört das es möglich sein soll einen Clickbaren bereich in einer Drawable Area zu machen.... hab da aber nix finden können... geht das Überhaupt? also das ein bestimmter bereich wie ein button reagiert....

oder vllt ist mein Problem beser anders zu lösen...:
Ich hab ein Bild das angezeigt werden soll. darauf sollen verschiedene Buttons/clickbare Bereiche sein.....

und wie lad ich am besten eine .svg oder eine .png in eine Drawable Area (das Bild soll natürlich immer die größe der Area haben....

hoffe mir kann jemand wenigstens bei ein paar meiner probleme helfen :)

mfg
vIiRuS
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Es gibt keine DrawableArea. Meinst du vllt DrawingArea?!
Bist du unbedingt auf diese angewiesen?
Warum machst du es nicht mit einer EventBox, dann kannst du auf die Mausklicks und die Position reagieren:

Code: Alles auswählen

import gtk

def event_check(widget, event):
	print event.x
	print event.y

win = gtk.Window()
win.connect('destroy', lambda x: gtk.main_quit())

ev = gtk.EventBox()
ev.connect('button-release-event', event_check)
ev.show()
win.add(ev)

win.show()
gtk.main()
vIiRuS
User
Beiträge: 16
Registriert: Montag 13. Juli 2009, 16:35

Ja DrawingArea mein ich O.o
ob ich drauf angewiesen bin?... ich weiß nicht genau.... bis jetzt hab ich eben nix gefunden was mein problem lösen würde... (wobei die DrawingArea das ja leider auch nicht ganz tut..)

die Position des Klicks auslesen kann ich jetzt auch schon mit der DrawingArea....

nur geht es ja nicht unbedingt drum den ort der clicks rauszufinden....
sondern eher das Buttons auf einem Bild verteilt werden sollen.
sicher könnte ich versuchen mit der EventBox den Ort des clicks auslesen zu lassen und dann mit werten in einer liste zu vergleichen.... nur werden es später ca. 150-200 punkte sein... und wenn die bei jedem click auf die eventbox überprüft werden.... könnte leistung fressen.....
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Und wenn du Buttons auf einem gtk.Layout anordnest?

Was genau hast du denn vor, spezifizier mal deine Anforderungen genauer.

btw: 150-200 Punkte dürfte wegen der Performance überhaupt gar kein Problem sein. Habe in einer ähnlichen Anwendung selbst mit 10.000 Werten keine Probleme, wenn man das ein bisschen optimiert.
vIiRuS
User
Beiträge: 16
Registriert: Montag 13. Juli 2009, 16:35

Nunja... das Problem beim gtk.Layout war, die Bildgröße anzupassen... weil ich es nicht hinbekommen habe das Bild skalieren zu lassen wenn sich die bildgröße ändert.....

Es soll ein kleines Spiel werden. der User soll auf verschiedene "Stationen" auf dem Bild klicken können und dann zu diesen reisen können...

ich werde das mit der EventBox einfach mal testen.... vllt passt das von der Performance ja gut.


Gibts denn bei PyGTK eine "einfache" möglichkeit die größe des Bildes an die Größe des Fenster oder der Box anzupassen?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Fällt mir jetzt spontan nichts ein.
Für ein Spiel solltest du vielleicht auch eine andere Bibliothek nutzen, die besser darauf abgestimmt ist, z.B. http://www.pygame.org/
Antworten