【问题标题】:GTK 3 - Popup menu to expand after adding items to itGTK 3 - 添加项目后展开的弹出菜单
【发布时间】:2012-11-23 21:07:02
【问题描述】:

我将 GTK 3.4 与 python 一起使用(带有 GObject 内省)。

我使用 Gtk.UIManager 构建了弹出菜单,当菜单被实例化时,一些菜单项不活动/不可见。后来它们被激活并在菜单中可见。

但是有一个小问题 - 弹出菜单的大小(高度)似乎保持不变 - 我现在必须滚动菜单项 - 在菜单区域的顶部和底部有 ^ v 箭头显示项目不适合区域,并且可以上下滚动。但是,如果弹出窗口的大小在显示时发生变化,我会非常喜欢。

Popup 在应用程序上实例化一次。像这样的对象:

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 )

有什么方法可以强制弹出菜单调整大小以显示其所有项目而无需滚动?

【问题讨论】:

    标签: python menu popup gtk3


    【解决方案1】:

    根据您的要求,我假设您希望菜单足够大以避免滚动。根据 GTK+ 3 文档,GtkMenu 是 GtkWidget 的子类。因此,从逻辑上讲,您应该能够请求菜单的大小。尝试各种尺寸,直到一个足够大。该文档适用于 C,但仍应适用于 Python。 https://developer.gnome.org/gtk3/stable/GtkWidget.html https://developer.gnome.org/gtk3/3.1/GtkMenu.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2018-12-24
      相关资源
      最近更新 更多