Bitte warten...

GTK+ 3: Popup-Dialoge

Gtk.Dialog

► GTK+ 3 Dokumentation: Gtk.Dialog
► Python GTK+ 3 Tutorial: Dialogs

Hier zunächst ein einfaches Beispiel, wie man einen Popup-Dialog erzeugt, und wie die Ereignisse beim Anklicken des Abbrechen- bzw. OK-Buttons verarbeitet werden:

Code kopieren
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. import gi
  4. gi.require_version('Gtk', '3.0')
  5. from gi.repository import Gtk
  6. class MainWindow(Gtk.Window):
  7. def __init__(self):
  8. Gtk.Window.__init__(self, title="Fenster mit Popup-Dialog")
  9. self.set_position(Gtk.WindowPosition.CENTER)
  10. self.set_default_size(300, 300)
  11. self.set_border_width(10)
  12. self.box01 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, homogeneous=False, spacing=5)
  13. self.add(self.box01)
  14. self.toolbutton01 = Gtk.ToolButton.new_from_stock("gtk-edit")
  15. self.toolbutton01.connect('clicked', self.on_toolbutton01_clicked) # Dies löst den Popup-Dialog aus
  16. self.box01.pack_start(self.toolbutton01, False, False, 0)
  17. self.show_all()
  18. def on_toolbutton01_clicked(self, widget):
  19. dialog = DialogEntry(self)
  20. response = dialog.run()
  21. if response == Gtk.ResponseType.OK:
  22. # Reaktion auf OK-Button
  23. print("Eingabe:", dialog.entry.get_text())
  24. elif response == Gtk.ResponseType.CANCEL:
  25. # Reaktion auf Abbrechen-Button
  26. print("Abbruch")
  27. dialog.destroy()
  28. class DialogEntry(Gtk.Dialog): # Die Klasse für das eigentliche Popup-Fenster
  29. def __init__(self, parent):
  30. Gtk.Dialog.__init__(self, "Popup-Dialog", parent, 0,
  31. (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
  32. Gtk.STOCK_OK, Gtk.ResponseType.OK))
  33. self.set_border_width(10)
  34. self.box = self.get_content_area()
  35. self.label = Gtk.Label("Geben Sie einen Text ein:")
  36. self.box.add(self.label)
  37. self.entry = Gtk.Entry()
  38. self.box.add(self.entry)
  39. self.show_all()
  40. win = MainWindow()
  41. win.connect("delete-event", Gtk.main_quit)
  42. Gtk.main()