Drei-Gänge-Menü
| Anke (encarsia) | Auch verfügbar in: English
Menüs, Toolbars und Statusbars
Glade
Toolbar
Toolbars können verschiedene Widgets wie Buttons, Togglebuttons, Radiobuttons oder (Unter-)Menüs enthalten. Die Erstellung und Bearbeitung erfolgt analog zum Menü über "Edit...".
Statusbar
In der Statusbar können kurze Meldungen/Nachrichten eingeblendet werden. Die Meldungen werden analog zu einer Liste behandelt, das Widget bietet die Funktionen push
und pop
.
Python
Um Nachrichten an die Statusbar zu senden, bedient man sich einfach der Funktion
widget.push(content_id, message)
Wenn man Meldungen ausschließlich "obendrauf" einblendet, kann man als content_id eine beliebige Zahl angeben, zum Beispiel 0
.
Listings
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()
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>
Kommentare
Comments powered by Disqus