Dialog (Python) Marta Maria Casetti mmcasetti@gmail.com 2012 Vyskakovací okno Dialog

Dialogové okno reagující na signál napojený na funkci zpětného volání.

Kód použitý k vygenerování tohoto příkladu from gi.repository import Gtk import sys class MyWindow(Gtk.ApplicationWindow): # Sestaví okno (rodičovské okno) def __init__(self, app): Gtk.Window.__init__(self, title="GNOME Button", application=app) self.set_default_size(250, 50) # Tlačítko v rodičovském okně button = Gtk.Button("Click me") # Napojí signál "clicked" tlačítka na funkci on_button_click() button.connect("clicked", self.on_button_click) # Přidá tlačítko do okna self.add(button) # Funkce zpětného volání pro signál "clicked" tlačítka v rodičovském # okně def on_button_click(self, widget): # Vytvoří Gtk.Dialog dialog = Gtk.Dialog() dialog.set_title("A Gtk+ Dialog") # Okno definované v konstruktoru (self) je rodičem dialogového okna # Navíc, dialogové okno je nad rodičovským oknem dialog.set_transient_for(self) # Nastaví modal true: nelze pracovat s ostaními okny této aplikace dialog.set_modal(True) # Přidá tlačítko do dialogového okna dialog.add_button(button_text="OK", response_id=Gtk.ResponseType.OK) # Napojí signál "response" (bylo kliknuto na tlačítko) na funkci # on_response() dialog.connect("response", self.on_response) # Získá oblast s obsahem dialogového okna, přidá do ní popisek content_area = dialog.get_content_area() label = Gtk.Label("This demonstrates a dialog with a label") content_area.add(label) # Zobrazí dialogové okno dialog.show_all() def on_response(self, widget, response_id): print("response_id is", response_id) # Zlikviduje widget (dialogové okno), když je zavolána funkce on_response() # (což je, když bylo kliknuto na tlačítko v dialogovém okně) widget.destroy() class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self) app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)
Užitečné metody pro widget Dialog

Na řádku 16 je signál "clicked" napojen na funkci zpětného volání on_button_click() pomocí widget.connect(signál, funkce zpětného volání). Podrobnější vysvětlení viz .

Místo set_modal(True) bychom mohli mít set_modal(False) následované set_destroy_with_parent(True), což by zlikvidovalo dialogové okno, když by se zavřelo hlavní okno.

add_button(button_text="The Answer", response_id=42), kde 42 je libovolné celé číslo, je alternativou k add_button(button_text="text", response_id=Gtk.ResponseType.RESPONSE), kde RESPONSE by bylo jedno z OK, CANCEL, CLOSE, YES, NO, APPLY, HELP, což zase odpovídá celým číslům -5, -6, …, -11.

Odkazy k API

V této ukázce se používá následující:

GtkDialog

GtkWindow