0

画像にツールチップを追加しようとしています。PyGTKチュートリアルに従うと、これはうまくいくはずです:

image = gtk.Image()
image.set_from_file(image_path)
box.pack_start(image, expand=False)

tooltip = gtk.Tooltips()
tooltip.set_tip(image, "Hello!")

そうでないことを除いて。画像の上にマウスを置いても何も起こりません。ただし、ボタンで動作することはわかっています (チュートリアルのサンプル コードを実行しました)。

GTK 2.12以降では、おそらくそのまま使用できますimage.set_tooltip_text("Hello!")が、2.10.4で立ち往生しているため、使用する必要がありますgtk.Tooltips

編集

のドキュメントによるとgtk.Tooltips

ツールチップは、独自の X ウィンドウを持つウィジェットでのみ設定できます。ウィジェットに独自のウィンドウがあるかどうかを確認するには、 を使用しますwidget.flags()&gtk.NO_WINDOW。独自のウィンドウを持たないウィジェットにツールチップを追加するには、ウィジェットを gtk.EventBox 内に配置し、代わりにイベントボックスにツールチップを追加します。

これで問題は解決しましたが、少し混乱しています。ボタンのフラグを確認しましたが、gtk.NO_WINDOW画像と同じフラグがあります。では、なぜボタンには EventBox が必要ないのに、画像には必要なのでしょうか?

4

1 に答える 1

0

そのインターフェイスを満たすために、GktButton はそれ自体のイベント ボックス (イベント ボックスのようなもの) を内部的に作成します。つまり、非表示の gdk ウィンドウでイベントをキャプチャします。GtkImage には、満たすべき同様のインターフェースがないため、イベントをキャプチャする必要はありません。

おそらく、ツールチップ インターフェイスの使用が EventBox にボタンを埋め込まなくても機能するのは、ボタンの内部実装の偶然であるか、ツールチップ インターフェイスは、実際には表示されているかどうかにかかわらず gdk ウィンドウに依存しており、Widget インターフェイスにはそのようなフラグがありません。

于 2012-09-25T21:08:54.663 に答える