Bedienelemente

 

Bedienelemente

class gtk.Widget

Alle Teile Ihres Programms, die auf dem Bildschirm zu sehen sind, sind Bedienelemente (widgets) - sowohl Fenster als auch Knöpfe, Eingabefelder usw.

gtk.Widget ist die Basisklasse aller Bedienelemente.

Viele Bedienelemente (z.B. Fenster) können selbst weitere Bedienelemente (“Kindelemente”) enthalten .

Wenn Bedienelemente empfindlich (sensitive) sind, reagieren sie auf Benutzeraktionen, wie z.B. Mausklicks oder Tastendrücke. Bedienelemente, die nicht empfindlich sind, werden speziell dargestellt (“ausgegraut”). Mit der Methode gtk.Widget.set_sensitive() können Sie festlegen, ob ein Bedienelement empfindlich ist oder nicht.

Wenn Bedienelemente unsichtbar sind, nehmen sie keinen Platz ein. Mit den Methoden gtk.Widget.show() und gtk.Widget.hide() können Bedienelemente sichtbar bzw. unsichtbar gemacht werden.

Wichtige Signale

delete-event()

Dieses Signal wird ausgelöst, wenn ein Bedienelemente entfernt werden soll.

Die zuständige Behandlungsroutine sieht so aus:

callback(self, widget, event, *args)
Parameters:
  • widget – Bedienlement, das entfernt werden soll
  • event – Ereignis, das das Signal ausgelöst hat
  • args – Weitere beim Verbinden des Signals angegebene Parameter

Note

Im Hauptfenster Ihrer Anwendung müssen Sie eine Behandlungsroutine für dieses Signal schreiben, die gtk.main_quit() aufruft, damit Ihr Programm beendet wird, wenn das Hauptfenster geschlossen wird.

Bei Fenstern, in denen der Benutzer Daten eintragen kann, ist hier der richtige Platz, um den Benutzer zu warnen, falls noch Daten nicht gespeichert sind.

Wichtige Methoden

connect(signal, func, *args)
Parameters:
  • signal – Names des Signals
  • func – Funktion
  • args – Zusätzliche Argumente, die an an func übergeben werden sollen.

Verbindet die Signal-Behandlungsroutine func mit dem Signal signal.

destroy()

Zerstört das Bedienelemente und alle seine Kindelemente. Das Bedienelement wird dabei vom Bildschirm entfernt (dabei wird das delete-event-Signal ausgelöst).

Normalerweise rufen Sie diese Methode nur bei Fenstern auf, wenn Sie diese nicht mehr benötigen. Andere Bedienelemente werden normalerweise erst mit den dazugehörigen Fenstern zerstört.

show()

Macht das Bedienelement sichtbar. Kindelemente werden nicht sichtbar gemacht.

hide()

Macht das Bedienelement unsichtbar. Kindelemente werden nicht unsichtbar gemacht.

show_all()

Macht das Bedienelement und alle seine Kindelemente sichtbar.

hide_all()

Macht das Bedienelement und alle seine Kindelemente unsichtbar.

set_sensitive(sensitive)
Parameters:sensitiveTrue, falls das Bedienelement empfindlich sein soll, sonst False

Legt fest, ob das Bedienelement empfindlich ist.

Beispiele

1
2
  is_last = self.is_last_item()
  self.builder.get_object('bt_next').set_sensitive(not is_last)

Hier ist self.is_last_item() eine Funktion, die prüft, ob das aktuelle Element einer Liste ö.ä. das letzte ist, und self.builder eine Instanz von gtk.Builder, die einen Knopf namens bt_next kennt. Dieser Knopf soll nur empfindlich sein, wenn das aktuelle Element nicht das letzte ist.

1
2
3
4
5
6
def on_cbtn_discount_toggled(self, button, *args):
    entry = self.builder.get_object('ent_reason')
    if button.get_active():
        entry.show()
    else:
        entry.hide()

Hier ist on_cbtn_discount_toggled die Behandlungsroutine für das toggled-Signal eines Ankreuzfelds namens cbtn_discount, self.builder wieder ein gtk.Builder, der ein Textfeld namens ent_reason kennt. Dieses Textfeld soll nur angezeigt werden, falls das Feld angekreuzt ist (also button.get_active() True zurückgibt).

1
2
 def on_window1_delete_event(self, *args):
     gtk.main_quit()

Hier ist on_window1_delete_event die Behandlungsroutine für das delete-event-Signal des Fensters window1. Wird dieses Fenster entfernt (also geschlossen), soll gtk.main_quit() aufgerufen werden, um die zentrale Ereignis-Warteschleife und damit das Programm zu beenden.