MenuButton Tiffany Antopolski tiffany.antopolski@gmail.com 2012 Marta Maria Casetti mmcasetti@gmail.com 2012 Un widget que muestra un menú cuando se pulsa Daniel Mustieles daniel.mustieles@gmail.com 2011 - 2017 Nicolás Satragno nsatragno@gmail.com 2012 - 2013 Jorge González jorgegonz@svn.gnome.org 2011 MenuButton

El widget «GtkMenuButton» se usa para mostrar un menú cuando se pulsa. Este menú puede proporcionarse como un «GtkMenu», o un «GMenuModel» abstracto. El widget «GtkMenuButton» puede contener cualquier widget hijo válido. Esto es casi cualquier «GtkWidget» estándar. El hijo más comúnmente usado es el «GtkArrow» proporcionado.

Necesita ejecutar GNOME 3.6 para que el «MenuButton» funcione.

Código usado para generar este ejemplo 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() # a menubutton menubutton = Gtk.MenuButton() menubutton.set_size_request(80, 35) grid.attach(menubutton, 0, 0, 1, 1) # a menu with two actions menumodel = Gio.Menu() menumodel.append("New", "app.new") menumodel.append("About", "win.about") # a submenu with one action for the menu submenu = Gio.Menu() submenu.append("Quit", "app.quit") menumodel.append_submenu("Other", submenu) # the menu is set as the menu of the menubutton menubutton.set_menu_model(menumodel) # the action related to the window (about) about_action = Gio.SimpleAction.new("about", None) about_action.connect("activate", self.about_callback) self.add_action(about_action) self.add(grid) # callback for "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) # the actions related to the application 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) # callback functions for the actions related to the application 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)
Métodos útiles para un widget «MenuButton»

En la línea 33 la señal «activate» de la acción about_action se conecta a la función de retorno de llamada about_callback() usando action.connect(señal, función de retorno de llamada). Consulte la para obtener una explicación más detallada.

La posición del menú está determinada por la propiedad «direction» del botón de menú y las propiedades «halign» o «valign» del menú. Por ejemplo, cuando «direction» es Gtk.ArrowType.DOWN (otra opción: UP) y la alineación horizontal es Gtk.Align.START (otras opciones: CENTER y END), el menú se posiciona bajo el botón, con su borde inicial (dependiendo de la dirección del texto) alineado con el borde inicial del botón. Si no hay suficiente espacio bajo el botón, el menú, en cambio, se abre sobre él. Si la alineación mueve parte del menú fuera de la pantalla, se «empuja hacia adentro».

En el caso de alineación vertical, las direcciones de «ArrowType» posibles son LEFT y RIGHT, y la alineación vertical es, nuevamente, START, CENTER o END.

set_align_widget(alineación) y set_direction(dirección) pueden usarse para establecer estas propiedades.

Referencias de la API

En este ejemplo se usa lo siguiente:

MenuButton