Seite 1 von 1
DrawingArea Beispiel
Verfasst: Freitag 28. Januar 2005, 13:43
von Leonidas
Hallo!
Könnte mir jemand ein simples Beispiel posten wie mal auf der Drawing Area zeichnet? Ich bin scheinbar zu doof dazu
grüße,
Leonidas
Verfasst: Freitag 28. Januar 2005, 15:05
von Dookie
Hi Leonidas,
mein gtk-Beispiel ->
http://python.sandtner.org/viewtopic.php?t=2502
und das aus dem Tutorial ->
http://localhost/doc/python-gtk2-tutori ... thods.html
hast du dir schon angeschaut?
Du brauchst bevor du zeichnest einen Graphiccontext und gezeichnet wird dann in dem drawable - drawingarea.window.
Gruß
Dookie
Verfasst: Freitag 28. Januar 2005, 15:54
von Leonidas
Ja, habe ich beides angeschaut, aber werde daraus nicht wirklich schlau. Folgendes habe ich zusammengebastelt:
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import gtk
width = 100
height = 50
class TurtleWindow:
def __init__(self):
self.window = gtk.Window()
self.window.connect("delete_event", self.delete_event)
self.drawing_area = gtk.DrawingArea()
self.drawing_area.set_size_request(width, height)
self.drawing_area.connect("expose-event", self.expose_event)
self.drawing_area.show()
self.window.add(self.drawing_area)
self.window.show()
self.drawable = self.drawing_area.window
self.gc = self.drawable.new_gc()
color = gtk.gdk.Color(red=255, green=25552, blue=0)
self.gc.set_foreground(color)
self.gc.set_background(color)
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False
def expose_event(self, area, event):
w, h = self.drawable.get_size()
print w,h
if __name__ == '__main__':
tw = TurtleWindow()
gtk.main()
Ich habe zwar ein DrawingArea, auch mit einer Größe, nur die Farbe konnte ich noch setzen. Und wie ich dort einen Strich oder sonstwas hinmale weiß ich auch noch nicht.
Verfasst: Freitag 28. Januar 2005, 16:27
von Dookie
Hi Leonidas,
du musst auf den realize-event warten, erst dann existiert das Widget auch auf dem Bildschirm. Dann kannst du in das
drawable das du über drawingarea.window erreichst etwas zeichnen.
Gruß
Dookie
Verfasst: Freitag 28. Januar 2005, 17:03
von Leonidas
Super, ich habe es geschafft. Danke Dookie! Jetzt werde ich sicher noch eine Menge Spaß damit haben
Jetzt nochmal ein funktionierendes Beispiel:
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import gtk
width = 100
height = 50
class TurtleWindow:
def __init__(self):
# Fenster erstellen
self.window = gtk.Window()
self.window.connect("delete_event", self.delete_event)
# DrawingArea erstellen
self.drawing_area = gtk.DrawingArea()
self.drawing_area.set_size_request(width, height)
self.drawing_area.connect("expose-event", self.expose_event)
self.drawing_area.show()
# Kombinieren
self.window.add(self.drawing_area)
self.window.show()
# Drawable und GraphicsContext bekommen
self.drawable = self.drawing_area.window
self.gc = self.drawable.new_gc()
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False
def expose_event(self, area, event):
w, h = self.drawable.get_size()
#print w,h
# Farben
color = gtk.gdk.Color(red=255, green=25552, blue=0)
self.gc.set_foreground(color)
self.gc.set_background(color)
# Punkt malen
self.drawable.draw_point(self.gc, 10, 10)
if __name__ == '__main__':
tw = TurtleWindow()
gtk.main()
Damit wird ein kleines Fenster erstellt, in das ein kleiner Punkt reingemalt wird.