Gtk.AccelLabel
Gtk.AccelLabel — A label which displays an accelerator key on the right of the text

Object Hierarchy:
GObject
╰── GInitiallyUnowned
╰── Gtk.Widget
╰── Gtk.Misc
╰── Gtk.Label
╰── Gtk.AccelLabel
See also:
Functions:
- new
(string:str) -> Gtk.Widget - set_accel_closure
(self, accel_closure:GObject.Closure) - get_accel_widget
(self) -> Gtk.Widget - set_accel_widget
(self, accel_widget:Gtk.Widget) - get_accel_width
(self) -> int - set_accel
(self, accelerator_key:int, accelerator_mods:Gdk.ModifierType) - get_accel
(self) -> accelerator_key:int, accelerator_mods:Gdk.ModifierType - refetch
(self) -> bool
Description:
The Gtk.AccelLabel widget is a subclass of GtkLabel that also displays an accelerator key on the right of the label text, e.g. Ctl+S.
It is commonly used in menus to show the keyboard short-cuts for commands.
The accelerator key to display is not set explicitly.
Instead, the Gtk.AccelLabel displays the accelerators which have been added to a particular widget. This widget is set by calling Gtk.AccelLabel::set_accel_widget().
For example, a Gtk.MenuItem widget may have an accelerator added to emit the activate signal when the Ctl+S key combination is pressed.
A Gtk.AccelLabel is created and added to the GtkMenuItem, and Gtk.AccelLabel::set_accel_widget() is called with the Gtk.MenuItem as the second argument. The Gtk.AccelLabel will now display Ctl+S after its label.
Note that creating a Gtk.MenuItem with Gtk.MenuItem::new_with_label() (or one of the similar functions for Gtk.CheckMenuItem and Gtk.RadioMenuItem) automatically adds a Gtk.AccelLabel to the Gtk.MenuItem and calls Gtk.AccelLabel::set_accel_widget() to set it up for you.
A Gtk.AccelLabel will only display accelerators which have Gtk.AccelFlags.VISIBLE set (see Gtk.AccelFlags).
A Gtk.AccelLabel can display multiple accelerators and even signal names, though it is almost always used to display just one accelerator key.
- Creating a simple menu item with an accelerator key:
menuitem_open = Gtk.MenuItem(label="Open")
submenu_file.append(menuitem_open)
menuitem_open.connect('activate', self.on_menu_open)
accelgroup = Gtk.AccelGroup()
self.add_accel_group(accelgroup)
menuitem_open.add_accelerator("activate",
accelgroup,
Gdk.keyval_from_name("o"),
Gdk.ModifierType.CONTROL_MASK,
Gtk.AccelFlags.VISIBLE)
Function Details:
new()
new (string:str) -> Gtk.Widget
Creates a new Gtk.AccelLabel.
- Returns:
a new
Gtk.AccelLabel.
set_accel_closure()
set_accel_closure (self, accel_closure:GObject.Closure)
Sets the closure to be monitored by this accelerator label. The closuremust be connected to an accelerator group; see `Gtk.AccelGroup:connect()`.
get_accel_widget()
get_accel_widget (self) -> Gtk.Widget
Fetches the widget monitored by this accelerator label. SeeGtk.AccelLabel:set_accel_widget().
- Returns:
the object monitored by the accelerator label, or
None.
set_accel_widget()
set_accel_widget (self, accel_widget:Gtk.Widget)
Sets the widget to be monitored by this accelerator label.
get_accel_width()
get_accel_width (self) -> int
Returns the width needed to display the accelerator key(s).This is used by menus to align all of the Gtk.MenuItem widgets, and shouldn'tbe needed by applications.
- Returns: the width needed to display the accelerator key(s).
set_accel()
set_accel (self, accelerator_key:int, accelerator_mods:Gdk.ModifierType)
Manually sets a keyval and modifier mask as the accelerator renderedby accel_label.
If a keyval and modifier are explicitly set then these values areused regardless of any associated accel closure or widget.
Providing an accelerator_key of 0 removes the manual setting.
- Since: 3.6
get_accel()
get_accel (self) -> accelerator_key:int, accelerator_mods:Gdk.ModifierType
Gets the keyval and modifier mask set withGtk.AccelLabel:set_accel().
- Since: 3.12
refetch()
refetch (self) -> bool
Recreates the string representing the accelerator keys.This should not be needed since the string is automatically updated wheneveraccelerators are added or removed from the associated widget.
- Returns:
always returns
FALSE.
Example:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class AccelLabel(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.set_title("AccelLabel")
self.set_default_size(200, -1)
self.connect("destroy", Gtk.main_quit)
grid = Gtk.Grid()
self.add(grid)
accelgroup = Gtk.AccelGroup()
self.add_accel_group(accelgroup)
accellabel = Gtk.AccelLabel("Button accelerator:")
accellabel.set_hexpand(True)
grid.attach(accellabel, 0, 0, 2, 1)
button = Gtk.Button("Save")
button.add_accelerator("clicked",
accelgroup,
Gdk.keyval_from_name("s"),
Gdk.ModifierType.CONTROL_MASK,
Gtk.AccelFlags.VISIBLE)
button.connect("clicked", self.on_button_clicked)
accellabel.set_accel_widget(button)
grid.attach(button, 0, 1, 2, 1)
def on_button_clicked(self, button):
print("Save button clicked")
window = AccelLabel()
window.show_all()
Gtk.main()