【发布时间】:2012-05-03 10:43:36
【问题描述】:
我有一个小应用程序,它使用DrawingArea 使用PyGObject 和GTK3 绘制一个简单的地图。
我使用 Pixbuf 加载
from gi.repository import Gtk, GdkPixbuf
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size("logo.png", 25, 25)
然后尝试在DrawingArea的绘制事件信号中绘制它
def draw(self, widget, context):
window = widget.get_window()
ctx = window.cairo_create()
ctx.set_source_pixbuf(pixbuf, 0, 0)
但我收到错误消息
"AttributeError: 'cairo.Context' object has no attribute 'set_source_pixbuf'"
如果我正确阅读了Gtk2 to Gtk3 migration guide,这应该可以。 我做错了什么?
【问题讨论】:
-
你确定你从 get_window 得到了一些可绘制的东西吗?
-
是的,我得到了一个
<gtk.gdk.X11Window object at 0xb71aab44 (GdkX11Window at 0x9db5aa0)>对象,这样就实现了DrawingArea 小部件。我似乎不知道在 Gtk3 中绘制 pixbuf 应该如何工作。 -
既然公认的答案是不使用pixbuf,而真正的问题不在于如何绘制pixbuf,你能否改变问题以便人们(比如我)来这里寻找如何使用 GTK3 和 PyGObject 真正绘制 GdkPixbuf 的答案不要进入这个问题?