decocode decocode deco    

GTK+ 3: Interaktions-Widgets #

GtkToolbar #

► GTK+ 3 Dokumentation: GtkToolbar GtkToolButton GtkSeparatorToolItem

Das Widget GtkToolbar erzeugt eine Werkzeugleiste, die anklickbare Icons in Form des Widgets GtkToolButton enthalten kann. Systemeigene Icons können über die Eigenschaft icon_name ausgewählt werden; der Name des Icons entspricht dabei der Vorgabe aus der Freedesktop.org Icon Naming Specification. Gruppen von Icons können mit dem Widget GtkSeparatorToolItem getrennt werden. Ein Icon wird mit insert() der Werkzeugleiste hinzugefügt.

Wird ein Icon angeklickt, so löst diese Aktion das Signal clicked aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
        self.toolbar01 = Gtk.Toolbar()
        self.box01.pack_start(self.toolbar01, False, False, 0)
        self.toolbutton01 = Gtk.ToolButton(icon_name="document-open")
        self.toolbutton01.connect('clicked', self.on_toolbutton01_clicked)
        self.toolbar01.insert(self.toolbutton01, 0)
        self.toolbutton02 = Gtk.ToolButton(icon_name="document-new")
        self.toolbar01.insert(self.toolbutton02, 1)
        self.separatortoolitem01 = Gtk.SeparatorToolItem()
        self.toolbar01.insert(self.separatortoolitem01, 2)
        self.toolbutton03 = Gtk.ToolButton(icon_name="help-about")
        self.toolbar01.insert(self.toolbutton03, 3)

GtkEntry #

► GTK+ 3 Dokumentation: GtkEntry

Das Widget GtkEntry erzeugt ein Texteingabefeld. Mit set_text() kann ein Text vorgegeben werden. Mit get_text() kann ein eingegebener Text ausgelesen werden.

Wird der Text des Eingabefeldes geändert, so löst diese Aktion das Signal changed aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Das Betätigen der Eingabe-Taste löst das Signal activate aus.

Quelltext auswählen
1
2
3
4
5
6
7
        self.entry01 = Gtk.Entry()
        self.entry01.set_text("Hallo Welt!")
        self.entry01.connect('changed', self.on_entry01_changed)
        self.entry01.connect('activate', self.on_entry01_activate)
        self.box02.pack_start(self.entry01, True, True, 6)

        print(self.entry01.get_text())

GtkButton #

► GTK+ 3 Dokumentation: GtkButton

Das Widget GtkButton erzeugt eine Schaltfläche. Wird die Schaltfläche angeklickt, so löst diese Aktion das Signal clicked aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Quelltext auswählen
1
2
3
        self.button01 = Gtk.Button(label="Klick mich!")
        self.button01.connect('clicked', self.on_button01_clicked)
        self.box03.pack_start(self.button01, False, False, 0)

GtkCheckButton #

► GTK+ 3 Dokumentation: GtkCheckButton

Das Widget GtkCheckButton erzeugt ein Kontrollkästchen. Beim Anklicken dieses Widgets wird das Signal toggled ausgelöst, das mit einer entsprechenden Funktion verknüpft werden kann.

Der Status des Widgets lässt sich mit set_active() festlegen und mit get_active() abfragen.

Quelltext auswählen
1
2
3
4
5
6
        self.checkbutton01 = Gtk.CheckButton()
        self.checkbutton01.set_active(True)
        self.checkbutton01.connect('toggled', self.on_checkbutton01_toggled)
        self.box02.pack_start(self.checkbutton01, False, False, 0)

        print(self.checkbutton01.get_active())

GtkRadioButton #

► GTK+ 3 Dokumentation: GtkRadioButton

Das Widget GtkRadioButton erzeugt einen Radiobutton für die Auswahl von genau einer Option aus einer Gruppe von Optionen. Ein Label kann als Argument der Funktion übergeben werden. Die Zusammengehörigkeit verschiedener Optionen zu einer Gruppe wird über new_with_label_from_widget() definiert, wobei als erstes Argument der Name eines der Radiobuttons aus der entsprechenden Gruppe angegeben wird.

Wird eine neue Option ausgewählt, so löst dies das Signal toggled aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Der Status eines Radiobuttons kann mit set_active() eingestellt und mit get_active() abgefragt werden.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
        self.radiobutton01 = Gtk.RadioButton("Option 1")
        self.radiobutton01.connect('toggled', self.on_radiobutton01_toggled)
        self.box02.pack_start(self.radiobutton01, False, False, 0)
        self.radiobutton02 = Gtk.RadioButton.new_with_label_from_widget(self.radiobutton01, "Option 2")
        self.radiobutton02.connect('toggled', self.on_radiobutton01_toggled)
        self.box02.pack_start(self.radiobutton02, False, False, 0)
        self.radiobutton03 = Gtk.RadioButton.new_with_label_from_widget(self.radiobutton01, "Option 3")
        self.radiobutton03.connect('toggled', self.on_radiobutton01_toggled)
        self.radiobutton03.set_active(True)
        self.box02.pack_start(self.radiobutton03, False, False, 0)

    def on_radiobutton01_toggled(self, widget):
        print(self.radiobutton01.get_active(), self.radiobutton02.get_active(),self.radiobutton03.get_active())

GtkSwitch #

► GTK+ 3 Dokumentation: GtkSwitch

Das Widget GtkSwitch erzeugt einen Schalter für eine An/Aus- bzw. Ja/Nein-Option.

Wird der Schalter betätigt, so löst dies das Signal notify::active aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Der Status des Schalters kann mit set_active() eingestellt und mit get_active() abgefragt werden.

Quelltext auswählen
1
2
3
4
        self.switch01 = Gtk.Switch()
        self.switch01.connect('notify::active', self.on_switch01_active)
        self.switch01.set_active(True)
        self.box02.pack_start(self.switch01, False, False, 0)

GtkComboBoxText #

► GTK+ 3 Dokumentation: GtkComboBoxText
► Python GTK+ 3 Tutorial: ComboBox

Das Widget GtkComboBoxText erzeugt eine einfache Combobox mit einer Dropdown-Liste zur Auswahl einer Option.

Wird eine Option ausgewählt, so löst dies das Signal notify::active aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Der Index der ausgewählten Option kann mit set_active() eingestellt und mit get_active() abgefragt werden.

Quelltext auswählen
1
2
3
4
5
6
7
        self.comboboxtext01 = Gtk.ComboBoxText()
        self.comboboxtext01.append_text("Option 0")
        self.comboboxtext01.append_text("Option 1")
        self.comboboxtext01.append_text("Option 2")
        self.comboboxtext01.connect('notify::active', self.on_comboboxtext01_active)
        self.comboboxtext01.set_active(1)
        self.box02.pack_start(self.comboboxtext01, False, False, 0)

GtkSpinButton #

► GTK+ 3 Dokumentation: GtkSpinButton

Das Widget GtkSpinButton erzeugt ein Steuerelement zur Auswahl eines numerischen Wertes, der schrittweise eingestellt werden kann. Der untere und obere Wert wird mit set_range() eingestellt, die Schrittweite für linke und mittlere Maustaste mit set_increments().

Der Wert des Widgets kann mit set_value() eingestellt und mit get_value() abgefragt werden.

Wird der Wert geändert, so löst dies das Signal value-changed aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Quelltext auswählen
1
2
3
4
5
6
        self.spinbutton01 = Gtk.SpinButton()
        self.spinbutton01.set_range(0, 100)
        self.spinbutton01.set_increments(1, 10)
        self.spinbutton01.set_value(50)
        self.spinbutton01.connect('value-changed', self.on_spinbutton01_changed)
        self.box02.pack_start(self.spinbutton01, False, False, 0)

GtkScale #

► GTK+ 3 Dokumentation: GtkScale

Das Widget GtkScale erzeugt einen Schieberegler zur Auswahl eines numerischen Wertes, der schrittweise eingestellt werden kann. Mit new_with_range() können folgende Parameter als Argumente übergeben werden: Orientierung, unterer Wert, oberer Wert, Schrittweite.

Der Wert des Widgets kann mit set_value() eingestellt und mit get_value() abgefragt werden.

Wird der Wert geändert, so löst dies das Signal value-changed aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Quelltext auswählen
1
2
3
4
5
        self.scale01 = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, 0, 10, 1)
        self.scale01.set_value(4)
        self.scale01.set_draw_value(True)  # Zeigt Werte neben dem Widget an
        self.scale01.connect('value-changed', self.on_scale01_changed)
        self.box02.pack_start(self.scale01, True, True, 0)

GtkFileChooserButton #

► GTK+ 3 Dokumentation: GtkFileChooserButton GtkFileChooserDialog
► Python GTK+ 3 Tutorial: FileChooserDialog

Das Widget GtkFileChooserButton erzeugt eine Schaltfläche, über die ein Dialog zur Auswahl einer Datei bzw. eines Ordners geöffnet werden kann.

Der Wert des Widgets kann mit set_filename() eingestellt und mit get_filename() abgefragt werden.

Wird ein neues Objekt gewählt, so löst dies das Signal file-set aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
# Datei auswählen:
        self.filechooserbutton01 = Gtk.FileChooserButton()
        self.filechooserbutton01.set_title("Wählen Sie eine Datei…")  # Titel des Dialogfensters
        self.filechooserbutton01.connect('file-set', self.on_filechooserbutton01_fileset)
        self.box02.pack_start(self.filechooserbutton01, False, False, 0)

# Ordner auswählen:
        self.filechooserdialog02 = Gtk.FileChooserDialog("Wählen Sie einen Ordner…", self, Gtk.FileChooserAction.SELECT_FOLDER, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, "Auswählen", Gtk.ResponseType.OK))
        self.filechooserbutton02 = Gtk.FileChooserButton.new_with_dialog(self.filechooserdialog02)
        self.filechooserbutton02.connect('file-set', self.on_filechooserbutton02_fileset)
        self.filechooserbutton02.set_filename(os.environ['HOME'])
        print(self.filechooserbutton02.get_filename())
        self.box02.pack_start(self.filechooserbutton02, False, False, 0)

GtkColorButton #

► GTK+ 3 Dokumentation: GtkColorButton
► GDK 3 Dokumentation: RGBA Colors

Das Widget GtkColorButton erzeugt eine Schaltfläche zur Auswahl einer Farbe.

Wird die Farbe geändert, so löst dies das Signal color-set aus, das mit einer entsprechenden Funktion verknüpft werden kann.

Der Wert des Widgets kann mit set_rgba() eingestellt und mit get_rgba() abgefragt werden. Dazu wird die Komponente Gdk aus dem Modul gi.repository benötigt.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
from gi.repository import Gtk, Gdk
...
        self.colorbutton01 = Gtk.ColorButton()
        self.colorbutton01.set_rgba(Gdk.RGBA(.2, .4, .6))
        self.colorbutton01.connect('color-set', self.on_colorbutton01_colorset)
        self.box02.pack_start(self.colorbutton01, True, True, 0)
...
    def on_colorbutton01_colorset(self, widget):
        color = self.colorbutton01.get_rgba()
        print(Gdk.RGBA.to_string(color))