Bitte einen kleinen Denkanstoss geben zu draw_line

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
barde
User
Beiträge: 2
Registriert: Samstag 18. November 2006, 12:13

Hallo!
Entschuldigt bitte,das ich euch mit einem so kleinen Problem belästige, aber ich komme einfach nicht weiter. Ich habe hier Code gebastelt, der einfach nur eine blaue Linie in einer drawable zeichnen soll, die wiederum als alleiniges widget in das window gepackt ist. Er öffnet das Fenster, aber die Linie ist nie zu sehen. Was mache ich falsch? Ich danke vielmals im voraus!

Code: Alles auswählen

import pygtk
pygtk.require('2.0')
import gtk
import os

class ImagesExample:
    def close_application(self, widget, event, data=None):
        gtk.main_quit()
        return False
    def __init__(self):
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("delete_event", self.close_application)
        window.set_size_request(500,100)
        window.set_title("gjackconnect")
        
        vordergrund = gtk.gdk.Color(0, 0, 65000)
        hintergrund = gtk.gdk.Color(0, 0, 0)

        
        # Die DrawArea als einziges Widget
        drawB = gtk.DrawingArea()
        drawB.set_size_request(500,100)
	window.add(drawB)	
	drawB.realize()        
        mygc = drawB.window.new_gc()
        mygc.foreground = vordergrund
        mygc.background = hintergrund

        drawB.show();

        
	window.show()
	drawB.window.draw_line(mygc,0,0,100,100)        

def main():
    gtk.main()
    return 0

if __name__ == "__main__":
    ImagesExample()
    main()
BlackJack

Die Methode in der gezeichnet wird muss mit `expose-event` verbunden werden:

Code: Alles auswählen

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_line(graphics_context, 0, 0, 100, 100)
        return True


def main():
    ImagesExample()
    gtk.main()
Antworten