Hallo,
ich stehe gerade vor dem Problem das ich auf Knopf druck ein Rechteck zeichnen will. Das Problem ist aber das ich es nur hinbekomme wenn ich es mit `expose-events ` ganz am Anfang wenn das Fenster gezeichnet wird hinbekomme.
Kann mir vielleicht jemand sagen wie man im nachhinein in eine drawing aera ein rechteck zeichnet?
Gruß
Treehouse
PyGtk: Bei Button click rechteck zeichnen.
Vielleicht ist es ja an einem kleinen Beispiel einfacher zu erklären worauf ich hinaus will.
Also gegeben ist folgender Code:
Nun will ich wenn ich auf einen Button clicke dieses Rechteck verändern von seinen Ausmaßen her. Nur verstehen ich nicht ganz wie man sowas anstellt. Vielleicht kann mir da ja jemand von euch auf die Sprünge helfen.
Also gegeben ist folgender Code:
Code: Alles auswählen
#! /usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class ImagesExample:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect('destroy', lambda w: gtk.main_quit())
self.area = gtk.DrawingArea()
self.area.set_size_request(200, 200)
self.window.add(self.area)
self.area.connect('expose-event', self.area_expose)
self.area.show()
self.window.show()
def area_expose(self, area, event):
graphics_context = self.area.window.new_gc()
self.area.window.draw_rectangle(graphics_context, True, 30,30 , 100,100)
return True
def main():
ImagesExample()
gtk.main()
main()
Hi Trundle,
ich habe gerade eben das rausgefunden. Warst einen Tick schneller mit der Antwort.
Aber wie immer besten Dank an dich, bist echt ein Meister deines Fachs.
Hier mal die Lösung:
Also die Lösung ist weit weg von jedlichem Desgin es geht ja auch nur darum die Funktionalität zu erläutern.
ich habe gerade eben das rausgefunden. Warst einen Tick schneller mit der Antwort.
Aber wie immer besten Dank an dich, bist echt ein Meister deines Fachs.
Hier mal die Lösung:
Code: Alles auswählen
#! /usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class ImagesExample:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect('destroy', lambda w: gtk.main_quit())
#button
self.button = gtk.Button()
self.button.set_label('Change')
self.button.connect('clicked', self.on_change)
# abmessungen
self.width = 30
self.height = 100
self.area = gtk.DrawingArea()
self.area.set_size_request(200, 200)
# vbox
vbox = gtk.VBox(2)
vbox.add(self.area)
vbox.add(self.button)
self.window.add(vbox)
self.area.connect('expose-event', self.area_expose)
self.area.show()
self.window.show_all()
def on_change(self, data):
self.width = 200
self.height = 200
self.area.queue_draw()
def area_expose(self, area, event):
graphics_context = self.area.window.new_gc()
self.area.window.draw_rectangle(graphics_context, True, 0,0 , self.width, self.height)
return True
def main():
ImagesExample()
gtk.main()
main()