1

我对 dnd 拖动图像有一个非常烦人的问题。当我开始拖动一些小部件时,它会在移动时显示一些默认图标。我只是希望这个图标实际上是小部件本身的外观。所以它应该看起来就像我通过拖动移动小部件一样。有没有简单的方法可以做到这一点?我开始环顾四周,发现只是使用 pixbuf pixbuf = gtk.gdk.pixbuf_new_from_xpm_data(xpm) myWidget.drag_source_set_icon_pixbuf(pixbuf) 设置图像

这种方式可以工作,但我需要使用小部件的当前外观,因为有主题和少量图像的叠加。

4

1 回答 1

1

您可以获取小部件的 Cairo 上下文,然后将其复制到 pixbuf:

cr = widget.window.cairo_create()
surface = cr.get_target()
surface.write_to_png('test.png')
pixbuf = gtk.gdk.pixbuf_new_from_file('test.png')
context.set_icon_pixbuf(pixbuf, 0, 0)

在这里,我将通过一个中间文件来保存和加载图像数据。可能有一种直接的方法可以做到这一点,但是在阅读了 Cairo 文档并尝试了各种奇怪的事情之后,我放弃了。

于 2012-09-27T15:58:00.477 回答