i'm trying to make a GTK application in python where I can just draw a loaded image onto the screen where I click on it. The way I am trying to do this is by loading the image into a pixbuf file, and then drawing that pixbuf onto a drawing area.
the main line of code is here:
def drawing_refresh(self, widget, event):
#clear the screen
widget.window.draw_rectangle(widget.get_style().white_gc, True, 0, 0, 400, 400)
for n in self.nodes:
widget.window.draw_pixbuf(widget.get_style().fg_gc[gtk.STATE_NORMAL],
self.node_image, 0, 0, 0, 0)
This should just draw the pixbuf onto the image in the top left corner, but nothing shows but the white image. I have tested that the pixbuf loads by putting it into a gtk image. What am I doing wrong here?
I found out I just need to get the function to call another expose event with
widget.queue_draw()
at the end of the function. The function was only being called once at the start, and there were no nodes available at this point so nothing was being drawn.You can make use of cairo to do this. First, create a gtk.DrawingArea based class, and connect the expose-event to your expose func.
This will draw the image every time the expose-event is emited.