Serve the menu
| Anke (encarsia) | Also available in: Deutsch
Menus, toolbars and statusbars
Glade
Toolbar
Toolbars contain different widgets like buttons, togglebuttons, radiobuttons oder (sub) menus. Generating and editing toolbars is analogue to menus.
Statusbar
The purpose of statusbars is to show notifications or useful information. Messages are treated like a list, the statusbar widget provides the functions push
and pop
.
Python
To send a message to the statusbar you will just need the function
widget.push(content_id,message)
If messages are exclusively shown "on top" the content_id can be a random number, like 0
.
Listings
Glade
<?xml version="1.0" encoding="UTF-8"?> <!-- Generated with glade 3.20.0 --> <interface> <requires lib="gtk+" version="3.20"/> <object class="GtkWindow" id="window"> <property name="can_focus">False</property> <property name="resizable">False</property> <signal name="destroy" handler="on_window_destroy" swapped="no"/> <child> <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_bottom">9</property> <property name="orientation">vertical</property> <child> <object class="GtkMenuBar"> <property name="visible">True</property> <property name="can_focus">False</property> <child> <object class="GtkMenuItem"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">_Datei</property> <property name="use_underline">True</property> <child type="submenu"> <object class="GtkMenu"> <property name="visible">True</property> <property name="can_focus">False</property> <child> <object class="GtkImageMenuItem"> <property name="label">gtk-new</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_nothing_here" swapped="no"/> </object> </child> <child> <object class="GtkImageMenuItem"> <property name="label">gtk-open</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_nothing_here" swapped="no"/> </object> </child> <child> <object class="GtkImageMenuItem"> <property name="label">gtk-save</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_nothing_here" swapped="no"/> </object> </child> <child> <object class="GtkImageMenuItem"> <property name="label">gtk-save-as</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_nothing_here" swapped="no"/> </object> </child> <child> <object class="GtkSeparatorMenuItem"> <property name="visible">True</property> <property name="can_focus">False</property> </object> </child> <child> <object class="GtkImageMenuItem"> <property name="label">gtk-quit</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_window_destroy" swapped="no"/> <accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> </object> </child> </object> </child> <child> <object class="GtkMenuItem"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">_Hilfe</property> <property name="use_underline">True</property> <child type="submenu"> <object class="GtkMenu"> <property name="visible">True</property> <property name="can_focus">False</property> <child> <object class="GtkImageMenuItem" id="menu_info"> <property name="label">gtk-about</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_info_button_clicked" swapped="no"/> <accelerator key="i" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> </object> </child> </object> </child> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">1</property> </packing> </child> <child> <object class="GtkToolbar"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="toolbar_style">both</property> <child> <object class="GtkToolButton"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">toolbutton</property> <property name="use_underline">True</property> <property name="stock_id">gtk-yes</property> </object> <packing> <property name="expand">False</property> <property name="homogeneous">True</property> </packing> </child> <child> <object class="GtkMenuToolButton"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">menu</property> <property name="use_underline">True</property> <property name="stock_id">gtk-print</property> <child type="menu"> <object class="GtkMenu"> <property name="visible">True</property> <property name="can_focus">False</property> <child> <object class="GtkMenuItem"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">submenuitem 1</property> <property name="use_underline">True</property> </object> </child> <child> <object class="GtkMenuItem"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">submenuitem 2</property> <property name="use_underline">True</property> </object> </child> </object> </child> </object> <packing> <property name="expand">False</property> <property name="homogeneous">True</property> </packing> </child> <child> <object class="GtkToggleToolButton"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Toggle</property> <property name="use_underline">True</property> </object> <packing> <property name="expand">False</property> <property name="homogeneous">True</property> </packing> </child> <child> <object class="GtkSeparatorToolItem"> <property name="visible">True</property> <property name="can_focus">False</property> </object> <packing> <property name="expand">False</property> <property name="homogeneous">True</property> </packing> </child> <child> <object class="GtkRadioToolButton" id="tb_radio1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Radio</property> <property name="use_underline">True</property> <property name="active">True</property> </object> <packing> <property name="expand">False</property> <property name="homogeneous">True</property> </packing> </child> <child> <object class="GtkRadioToolButton"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Radio</property> <property name="use_underline">True</property> <property name="active">True</property> <property name="group">tb_radio1</property> </object> <packing> <property name="expand">False</property> <property name="homogeneous">True</property> </packing> </child> <child> <object class="GtkRadioToolButton"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">Radio</property> <property name="use_underline">True</property> <property name="active">True</property> <property name="group">tb_radio1</property> </object> <packing> <property name="expand">False</property> <property name="homogeneous">True</property> </packing> </child> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">2</property> </packing> </child> <child> <object class="GtkSeparator"> <property name="visible">True</property> <property name="can_focus">False</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">3</property> </packing> </child> <child> <object class="GtkStatusbar" id="statusbar"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> <property name="margin_right">10</property> <property name="margin_start">10</property> <property name="margin_end">10</property> <property name="margin_top">6</property> <property name="margin_bottom">6</property> <property name="orientation">vertical</property> <property name="spacing">2</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">4</property> </packing> </child> </object> </child> <child> <placeholder/> </child> </object> <object class="GtkAboutDialog" id="about_dialog"> <property name="can_focus">False</property> <property name="title" translatable="yes">Info</property> <property name="resizable">False</property> <property name="modal">True</property> <property name="window_position">center-on-parent</property> <property name="destroy_with_parent">True</property> <property name="type_hint">dialog</property> <property name="deletable">False</property> <property name="transient_for">window</property> <property name="program_name">Info Dialog</property> <property name="version">0.1</property> <property name="comments" translatable="yes">Platz für mehr Blabla</property> <property name="website">www.example.com</property> <property name="logo_icon_name">image-missing</property> <child internal-child="vbox"> <object class="GtkBox"> <property name="can_focus">False</property> <property name="orientation">vertical</property> <property name="spacing">2</property> <child internal-child="action_area"> <object class="GtkButtonBox"> <property name="can_focus">False</property> <property name="layout_style">end</property> <child> <object class="GtkButton" id="close_button"> <property name="label">gtk-close</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="use_stock">True</property> <signal name="clicked" handler="on_close_button_clicked" swapped="no"/> </object> <packing> <property name="expand">True</property> <property name="fill">True</property> <property name="position">0</property> </packing> </child> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> <property name="position">0</property> </packing> </child> </object> </child> <child> <placeholder/> </child> </object> </interface>
Python
#!/usr/bin/python # -*- coding: utf-8 -*- import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class Handler: def on_window_destroy(self, *args): Gtk.main_quit() def on_info_button_clicked(self, widget): x.sb_message("Öffne Info-Dialog") x.builder.get_object("about_dialog").show_all() def on_close_button_clicked(self, widget): x.sb_message("Schließe Info-Dialog") x.builder.get_object("about_dialog").hide_on_delete() def on_nothing_here(self, widget): x.sb_message("{}: Widget hat keine Funktion.".format(widget)) class Example: def __init__(self): self.builder = Gtk.Builder() self.builder.add_from_file("05_menutoolbar.glade") self.builder.connect_signals(Handler()) window = self.builder.get_object("window") window.show_all() def sb_message(self,message): self.builder.get_object("statusbar").push(0, message) def main(self): Gtk.main() x = Example() x.main()
Comments
Comments powered by Disqus