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