将图像绘制到gtk.DrawingArea?

时间:2011-11-27 05:12:55

标签: python drawing pygtk drawable paint

我正在根据找到here的基本教程编写一个PyGtk绘图程序。

有没有办法将图像添加到绘图区域,以便您仍然可以在图像上绘图?就像邮票或进口照片一样。我尝试添加gtk.Image(),但gtk.DrawingArea对象没有属性add

self.window = gtk.Window((gtk.WINDOW_TOPLEVEL))
self.window.set_title ("Canvas")
self.window.set_position(gtk.WIN_POS_CENTER)
hbox = gtk.HBox(False, 0)
self.window.add(hbox)
self.window.set_resizable(False)

# Create the drawing area
drawing_area = gtk.DrawingArea()
drawing_area.set_size_request(screenWidth-350, screenHeight-100)
hbox.pack_start(drawing_area, True, True, 0)
drawing_area.show()

1 个答案:

答案 0 :(得分:4)

您必须使用gtk.gdk.Drawable.draw_pixbuf()将图像(作为gtk.gdk.Pixbuf而非gtk.Image)自行绘制到背景像素图上。只有容器窗口小部件(可以包含其他窗口小部件的窗口小部件)具有add()方法,而gtk.DrawingArea不是一个。

pixbuf = gtk.gdk.pixbuf_new_from_file(image_filename) #one way to load a pixbuf
pixmap.draw_pixbuf(None, pixbuf, 0, 0, x, y, -1, -1, gtk.gdk.RGB_DITHER_NONE, 0, 0)