1

画像をドラッグする際に注意が必要な問題があります。ウィジェットをドラッグし始めると、移動時にデフォルトのアイコンが表示されます。このアイコンが実際にウィジェット自体に見えることを望んでいます。したがって、ウィジェットをドラッグして移動するのと同じように見えるはずです。これを達成する簡単な方法はありますか?周りを見回し始めたところ、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 に答える