2012-09-26 73 views
1

我有警惕dnd拖動圖像惱人的問題。當我開始拖動一些小部件時,它會在移動時顯示一些默認圖標。我只是希望這個圖標實際上是小部件的外觀。所以它應該看起來就像我通過拖動移動小部件一樣。 有沒有簡單的方法來完成這個? 我開始環顧四周,所有我發現是使用的pixbuf設置圖像 的pixbuf = gtk.gdk.pixbuf_new_from_xpm_data(XPM) myWidget.drag_source_set_icon_pixbuf(PIXBUF)如何使用小部件curent渲染作爲拖放圖像

這樣,它的工作原理,但我需要使用當前的外觀小部件,因爲有幾個圖像的主題和覆蓋。

回答

1

你可以得到widget的開羅背景,然後將其複製到一個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) 

在這裏,我要通過一箇中間文件保存和加載圖像數據。可能有一個直接的方法可以做到這一點,但在通過開羅文檔並嘗試各種奇怪的事情之後,我放棄了。