我正在尝试用 python 制作一个 GTK 应用程序,我可以将加载的图像绘制到屏幕上,然后单击它。我尝试执行此操作的方法是将图像加载到 pixbuf 文件中,然后将该 pixbuf 绘制到绘图区域上。
主要代码行在这里:
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)
这应该只是将 pixbuf 绘制到左上角的图像上,但除了白色图像之外什么都没有显示。我已经测试了 pixbuf 通过将其放入 gtk 图像中来加载。我在这里做错了什么?
您可以利用 cairo 来执行此操作。首先,创建一个基于 gtk.DrawingArea 的类,并将暴露事件连接到您的暴露函数。
class draw(gtk.gdk.DrawingArea):
def __init__(self):
self.connect('expose-event', self._do_expose)
self.pixbuf = self.gen_pixbuf_from_file(PATH_TO_THE_FILE)
def _do_expose(self, widget, event):
cr = self.window.cairo_create()
cr.set_operator(cairo.OPERATOR_SOURCE)
cr.set_source_rgb(1,1,1)
cr.paint()
cr.set_source_pixbuf(self.pixbuf, 0, 0)
cr.paint()
这将在每次发出暴露事件时绘制图像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)