6

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

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

但是有一个小问题 - 弹出菜单的大小(高度)似乎保持不变 - 我现在必须滚动菜单项 - 在菜单区域的顶部和底部有 ^ 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 的子类。因此,从逻辑上讲,您应该能够请求菜单的大小。尝试各种尺寸,直到一个足够大。该文档适用于 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 回答