# 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