MenuButton Tiffany Antopolski tiffany.antopolski@gmail.com 2012 Marta Maria Casetti mmcasetti@gmail.com 2012 Tlačítko, které po kliknutí zobrazí nabídku MenuButton

Widget GtkMenuButton se používá k zobrazení nabídky po kliknutí na něj. Nabídka může být poskytnuta v podobě GtkMenu nebo jako abstraktní GMenuModel. Tlačítko může obsahovat libovolný platný synovský widget. To znamená, že může obsahovat většinu ostatních standardních potomků GtkWidget. Nejčastěji používaným vloženým widgetem je GtkArrow.

Musíte používat GNOME 3.6 nebo novější, aby widget MenuButton fungoval.

Kód použitý k vygenerování tohoto příkladu from gi.repository import Gtk from gi.repository import Gio import sys class MyWindow(Gtk.ApplicationWindow): def __init__(self, app): Gtk.Window.__init__(self, title="Menubutton Example", application=app) self.set_default_size(600, 400) grid = Gtk.Grid() # Tlačítko s nabídkou menubutton = Gtk.MenuButton() menubutton.set_size_request(80, 35) grid.attach(menubutton, 0, 0, 1, 1) # Nabídka se dvěmi akcemi menumodel = Gio.Menu() menumodel.append("New", "app.new") menumodel.append("About", "win.about") # Podnabídka s jednou akcí pro nabídku submenu = Gio.Menu() submenu.append("Quit", "app.quit") menumodel.append_submenu("Other", submenu) # Nabídka je nastavena jako nabídka pro MenuButton menubutton.set_menu_model(menumodel) # Akce vztahující se k oknu ("about") about_action = Gio.SimpleAction.new("about", None) about_action.connect("activate", self.about_callback) self.add_action(about_action) self.add(grid) # Zpětné volání pro "about" def about_callback(self, action, parameter): print("You clicked \"About\"") class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self) # Akce vztahující se k aplikaci new_action = Gio.SimpleAction.new("new", None) new_action.connect("activate", self.new_callback) self.add_action(new_action) quit_action = Gio.SimpleAction.new("quit", None) quit_action.connect("activate", self.quit_callback) self.add_action(quit_action) # Funkce zpětného volání pro akce vtahující se k aplikaci def new_callback(self, action, parameter): print("You clicked \"New\"") def quit_callback(self, action, parameter): print("You clicked \"Quit\"") self.quit() app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)
Užitečné metody pro widget MenuButton

Na řádku 33 je signál "activate" od činnosti about_action napojen na funkci zpětného volání about_callback() pomocí action.connect(signál, funkce zpětného volání). Podrobnější vysvětlení viz .

Umístění nabídky je určeno vlastností "direction" (směr) tlačítka s nabídkou a vlastnostmi "halign" (vodorovné zarovnání) nebo "valign" (svislé zarovnání) nabídky. Například, když je směr Gtk.ArrowType.DOWN (další volba je UP) a vodorovné zarovnání je Gtk.Align.START (další volby jsou CENTER a END), bude nabídka umístěna pod tlačítkem s počáteční hranou (v závislosti na směru textu) nabídky zarovnanou s počáteční hranou tlačítka. Jestliže pod tlačítkem není dostatek místa, vyskočí místo toho nabídka nahoru. Když by zarovnání posunulo část nabídky mimo obrazovku, natlačí se do viditelné části.

V případě svislého zarovnání jsou možné směry šipky LEFT a RIGHT a svislé zarovnání je START, CENTER nebo END.

K nastavení těchto vlastností můžete použít set_align_widget(zarovnání) a set_direction(směr).

Odkazy k API

V této ukázce se používá následující:

MenuButton