2012-11-23 14 views
6

Używam GTK 3.4 z pythonem (z introspekcją GObject).GTK 3 - Menu kontekstowe do rozwinięcia po dodaniu elementów do niego

Mam wbudowane menu podręczne z Gtk.UIManager, niektóre pozycje menu nie są aktywne/widoczne po utworzeniu menu. Później są aktywowane i stają się widoczne w menu.

Jest jednak jeden mały problem - rozmiar jednego wyskakującego menu (wysokość) wydaje się pozostawać taki sam - i muszę przewijać teraz pozycje menu - w górnej i dolnej części obszaru menu znajdują się^v strzałki do wyświetlenia elementy nie mieszczą się w obszarze i można przewijać w górę iw dół. Jednak bardzo bym wolał, gdyby rozmiar okna pop-up po prostu się zmieniał, gdy jest wyświetlany.

Wyskakuje jedno wystąpienie w aplikacji. obiekt tak:

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') 

i pokazane na ikonę w zasobniku z tej obsługi sygnału:

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) 

Czy istnieje jakiś sposób, jak do menu pop-up zmusić do zmiany rozmiaru, aby pokazać wszystkich swoich rzeczy bez trzeba przewijać?

Odpowiedz

2

Zgodnie z twoją prośbą, zakładam, że chcesz, aby menu było wystarczająco duże, aby uniknąć przewijania. Zgodnie z dokumentacją GTK + 3, GtkMenu jest podklasą GtkWidget. Zatem logicznie, powinieneś być w stanie zażądać rozmiaru menu. Wypróbuj różne rozmiary, aż jeden będzie wystarczająco duży. Ta dokumentacja dotyczy C, ale powinna nadal mieć zastosowanie w Pythonie. https://developer.gnome.org/gtk3/stable/GtkWidget.html https://developer.gnome.org/gtk3/3.1/GtkMenu.html