1

私は GtkMenuToolButton を使用しており、ボタンとメニューがあります。矢印をクリックすると、メニューが開きます。ボタンでも同じメニューを開くようにしたいと思います。「クリックされた」コールバックで単に「show-menu」を発行しても機能しませんでした。これを機能させる方法を教えてください。

4

2 に答える 2

1

self.tool_button_menuメニューを作成するときは、メニューへの参照を何かとして保存します。次に、clickedコールバックで、

self.tool_button_menu.popup(None, None, None, None, 0, Gtk.get_current_event_time())

最初の2つNoneは、親メニューと親メニュー項目です(該当なし)。次の2つNoneは、ポジショニングコールバック関数(これについては後ほど詳しく説明します)とそれに渡すデータです。0メニューがマウスボタンの押下によって開始された場合はマウスボタンです(ただし、0を渡す必要があります。あなたの場合は、マウスボタンのリリースまたはキーの押下のいずれかだと思います)。最後のパラメータは、に与えるタイムスタンプです。メニューポップアップイベント。

今度は測位機能。2つのパラメーターを取り、3つを返します。

def positioning_function(menu, data=None):
    # ...magic...
    return x, y, push_in

push_inTrueメニューを常に画面に収まるように再配置する場合は、このようにする必要があります。良い考えのようです。ツールボタンの;を確認することで、適切な値を取得できますx。そのオブジェクトの、、、および属性を読み取り、メニューを配置するのに適した場所を計算します。yget_allocation()xywidthheight

于 2012-10-10T20:20:42.920 に答える
1

私は現在これをやっている:

  • GtkMenuToolButton の代わりに、カスタム コンテンツを含む GtkToolItem があります。
  • カスタムコンテンツには GtkMenuButton があります
  • その中で、デフォルトの GtkArrow を削除し、Label + GtkArrow を持つ 1x2 GtkGrid に置き換えます。

全体として、それは私が望むことを行います=)

于 2012-10-10T20:31:37.753 に答える