GTK 3 – всплывающее меню для расширения после добавления элементов к нему

Я использую 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 ) 

Есть ли способ заставить меню всплывать для изменения размера, чтобы показать все его элементы без необходимости прокрутки?

По вашему запросу, я предполагаю, что вы хотите, чтобы меню было достаточно большим, чтобы избежать прокрутки. Согласно документации GTK + 3, GtkMenu является подклассом GtkWidget. Итак, логично, вы должны иметь возможность запросить размер меню. Попробуйте разные размеры, пока один не станет достаточно большим. Эта документация предназначена для C, но она все равно должна применяться к Python. https://developer.gnome.org/gtk3/stable/GtkWidget.html https://developer.gnome.org/gtk3/3.1/GtkMenu.html