Blame platform-demos/cs/signals-callbacks.py.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:e="http://projectmallard.org/experimental/" type="guide" style="task" id="signals-callbacks.py" xml:lang="cs">
Packit 1470ea
Packit 1470ea
<info>
Packit 1470ea
  <title type="text">Signály a zpětná volání (Python)</title>
Packit 1470ea
  <link type="guide" xref="beginner.py#theory"/>
Packit 1470ea
  <link type="next" xref="button.py"/>
Packit 1470ea
  <revision version="0.1" date="2012-06-16" status="draft"/>
Packit 1470ea
Packit 1470ea
  <desc>Vysvětlení signálů a zpětných volání v GTK+.</desc>
Packit 1470ea
  <credit type="author copyright">
Packit 1470ea
    <name>Sebastian Pölsterl</name>
Packit 1470ea
    <email its:translate="no">sebp@k-d-w.org</email>
Packit 1470ea
    <years>2011</years>
Packit 1470ea
  </credit>
Packit 1470ea
  <credit type="editor">
Packit 1470ea
    <name>Marta Maria Casetti</name>
Packit 1470ea
    <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
    <years>2012</years>
Packit 1470ea
  </credit>
Packit 1470ea
</info>
Packit 1470ea
Packit 1470ea
<title>Signály a zpětná volání</title>
Packit 1470ea
Packit 1470ea
<links type="section"/>
Packit 1470ea
Packit 1470ea
<section id="overview">
Packit 1470ea
<title>Přehled</title>
Packit 1470ea
Packit 1470ea

Podobně jako jiné nástrojové sady GUI, i GTK+ používá událostmi řízený model programování. Když uživatel nic nedělá, hoví si GTK+ v hlavní smyčce a čeká na vstup. Když uživatel provede nějakou činnost – řekněme, že klikne myší – tak se hlavní smyčka „probudí“ a doručí událost do GTK+.

Packit 1470ea
Packit 1470ea

Když událost obdrží widgety, nejčastěji vyšlou jeden nebo více signálů. Signály upozorní váš program, že „se něco zajímavého stalo“ tím, že vyvolají funkci, kterou jste na signál napojili. Tyto funkce jsou obecně známé jako zpětná volání. Jakmile je vaše zpětné volání vyvoláno, měli byste běžně něco udělat. Po dokončení zpětného volání se GTK+ vrátí do zpětné smyčky a čeká na další uživatelův vstup.

Packit 1470ea
Packit 1470ea

Obecný příklad: handler_id = widget.connect("událost", zpětné_volání, data). widget je instance widgetu, který jsme vytvořili dříve. Následuje událost, která nás zajímá. Každý widget má své vlastní konkrétní události, které u něj mohou nastat. Například, když máte Gtk.Button, obvykle chcete napojit událost "clicked": to znamená, že když je na tlačítko kliknuto, vyšle se signál. Jiným příkladem je signál notify::property: kdykoliv je u GObject změněna <link xref="properties.py">vlastnost</link>, tak místo prostého vyslání signálu notify, přiřadí GObject tomuto signálu doplňující údaj v podobě názvu změněné vlastnosti. To umožňuje klientovi, který si přeje být upozorňován na změny jen u jedné vlastnosti, odfiltrovat většinu událostí dříve, než k němu dorazí. Zatřetí, argument zpětné_volání je název funkce zpětného volání, která obsahuje kód, co se má spustit při vyslání signálu zadaného typu. A nakonec, volitelný argument data obsahuje libovolná data, která by měla být předána při vyslání signálu.

Packit 1470ea
Packit 1470ea

Funkce vrací číslo (handler_id), které identifikuje tento konkrétní pár signál/zpětné volání. Toto číslo je požadováno při odpojení signálu v podobě widget.disconnect(handler_id). Způsobí to, že takováto funkce zpětného volání již nebude nadále volána v budoucnu nebo při právě probíhajícím vysílání signálu, který byl na ni napojen.

Packit 1470ea
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="references">
Packit 1470ea
Packit 1470ea
<title>Odkazy</title>
Packit 1470ea

<link href="http://developer.gnome.org/gobject/stable/signal.html">Signály</link> v dokumentaci k GObject

Packit 1470ea

<link href="http://python-gtk-3-tutorial.readthedocs.org/en/latest/basics.html">Základy – Hlavní smyčka a signály</link> ve výuce GTK+ 3 v jazyce Python

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
</page>