6

私はPythonでGTK 3.4を使用しています(GObjectイントロスペクションを使用)。

Gtk.UIManager を使用してポップアップ メニューをビルドしましたが、メニューがインスタンス化されたときに一部のメニュー項目がアクティブ/表示されません。後でそれらがアクティブになり、メニューに表示されるようになりました。

ただし、小さな問題が 1 つあります。1 つのポップアップ メニューのサイズ (高さ) は同じままのようです。メニュー項目をスクロールする必要があります。メニュー領域の上部と下部に、項目が表示されないことを示す ^ v 矢印があります。領域に収まり、上下にスクロールできること。ただし、ポップアップのサイズが表示されたときに変更されるだけであれば、私は非常に好みます。

ポップアップはアプリで一度インスタンス化されます。次のようなオブジェクト:

menu_manager=Gtk.UIManager()
menu_manager.insert_action_group(self.core_actions)
menu_manager.insert_action_group(self.power_type_actions)
menu_manager.add_ui_from_file(os.path.join(_curr_dir, 'ui', 'menus.xml'))
self.menu_manager=menu_manager
self.popup=menu_manager.get_widget('/popup')

そして、このシグナルハンドラでトレイアイコンに表示されます:

def show_menu(self, tray_icon, button, activate_time, user_data=None):  
    def pos(menu, icon): 
        p= Gtk.StatusIcon.position_menu(menu, icon)
        return p
    log.debug( 'Menu button=%s, time=%s', button, activate_time)
    self.popup.popup(None, None, pos, tray_icon, button, activate_time )

ポップアップのメニューを強制的にサイズ変更して、スクロールせずにすべての項目を表示する方法はありますか?

4

1 に答える 1

2

あなたの要求により、スクロールを避けるためにメニューを十分に大きくしたいと思っていると思います。GTK+ 3 のドキュメントによると、GtkMenu は GtkWidget のサブクラスです。したがって、論理的には、メニューのサイズをリクエストできるはずです。1 つが十分な大きさになるまで、さまざまなサイズを試してください。このドキュメントは C 用ですが、Python にも適用する必要があります。 https://developer.gnome.org/gtk3/stable/GtkWidget.html https://developer.gnome.org/gtk3/3.1/GtkMenu.html

于 2013-04-06T18:02:18.737 に答える