# Entry (Python)

Marta Maria Casetti
2012
Sebastian Pölsterl
sebp@k-d-w.org 2011
Jednořádkové textové vstupní pole

# Entry

Tato aplikace vás přivítá v terminálu jménem, které zadáte.

# Kód použitý k vygenerování tohoto příkladu

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow):

def __init__(self, app): Gtk.Window.__init__(self, title="What is your name?", application=app) self.set_default_size(300, 100) self.set_border_width(10)

# Jednořádkové vstupní pole name_box = Gtk.Entry() # Vyšle signál, když je zmáčknuta klávesa Enter, napojený na # funkci zpětného volání cb_activate name_box.connect("activate", self.cb_activate)

# Přidá Gtk.Entry do okna self.add(name_box)

# the content of the entry is used to write in the terminal def cb_activate(self, entry): # Získá obsah widgetu name = entry.get_text() # Vypíše jej v hezké podobě do terminálu print("Hello " + name + "!")

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 Entry

Na řádku 14 je signál `"activate"` napojen na funkci zpětného volání `cb_activate()` pomocí `widget.connect(signál, funkce_zpětného_volání)`. Podrobnější vysvětlení viz . Mezi signály, které widget `Gtk.Entry` umí vyslat patří: `"activate"` (vyšle, když uživatel použije klávesu Enter); `"backspace"` (vyšle, když uživatel použije klávesu Backspace nebo Shift-Backspace); `"copy-clipboard"` (Ctrl-c a Ctrl-Insert); `"paste-clipboard"` (Ctrl-v a Shift-Insert); `"delete-from-cursor"` (Delete pro mazání znaku; Ctrl-Delete pro mazání slova); `"icon-press"` (vyšle, když uživatel klikne na aktivovatelné ikoně); `"icon-release"` (vyšle při uvolnění tlačítka z kliknutí myší na aktivovatelné ikoně); `"insert-at-cursor"` (vyšle, když uživatel začne vkládat pevný řetězec na pozici kurzoru); `"move-cursor"` (vyšle, když uživatel začne posouvat kurzor); `"populate-popup"` (vyšle před zobrazením kontextové nabídky pole; může být použito k přidání položek do ní).

`get_buffer()` a `set_buffer(vyrovnávací_paměť)`, kde `vyrovnávací_paměť` je objekt Gtk.EntryBuffer, můžete použít k získání a nastavení vyrovnávací paměti pro vstupní pole.

`get_text()` a `set_text("nějaký text")` můžete použít k získání a nastavení obsahu vstupního pole.

`get_text_length()` vrací délku textu.

`get_text_area()` vrací oblast, ve které je textové vstupní pole vykreslováno.

Když nastavíme `set_visibility(False)`, jsou znaky v poli zobrazovány pomocí „neviditelného“ znaku. Je zvolen nejlépe dostupný v aktuálním písmu, ale můžete jej změnit na jiný pomocí `set_invisible_char(zn)`, kde `zn` je znak v Unikódu. Později lze změnu zvrátit použitím `unset_invisbile_char()`.

`set_max_length(int)`, kde `int` je celé číslo, zkrátí každý vstup delší než `int` na požadovanou maximální délku.

Ve výchozím stavu, když zmáčknete klávesu Enter, vyšle Gtk.Entry signál `"activate"`. Pokud byste chtěli aktivovat výchozí widget okna (nastavený pomocí metody `set_default(widget)` okna), použijte `set_activates_default(True)`.

Pro nastavení rámečku okolo vstupního pole: `set_has_frame(True)`.

`set_placeholder_text("nějaký text")` nastavuje text, který má být zobrazen ve vstupním poli, když je prázdné a nezaměřené.

`set_overwrite_mode(True)` a `set_overwrite_mode(False)` zapíná/vypíná režim přepisování.

Když je nastaveno `set_editable(False)`, nemůže uživatel upravovat text ve widgetu.

`set_completion(doplňování)`, kde `doplňování` je `Gtk.EntryCompletion`, nastaví doplňování, nebo jej naopak zakáže, když je `doplňování` nastaveno na `None`.

Widget `Entry` může na pozadí textu zobrazovat průběh nebo aktivitu. K vyplnění zadané části pruhu používáme `set_progress_fraction(část)`, `část` je číslo typu `float` v rozmezí `0.0` až `1.0` včetně. `set_progress_pulse_step()` používáme k nastavení části celkové délky pole, která se má pohybovat jako poletující blok ukazatele průběhu při každém zavolání `progress_pulse()`. Poslední zmíněná metoda dává najevo, že byl učiněn nějaký pokrok a způsobí, že indikátor ukazatele průběhu vstoupí do aktivního režimu, kdy blok poletuje tam a zpět. Každé zavolání `progress_pulse()` způsobí, že se blok o kousek posune (o kolik přesně je určeno, jak již bylo řečeno, pomocí `set_progress_pulse_step()`).

Widget `Entry` může také zobrazovat ikony. Tyto ikony, které lze aktivovat kliknutí, mohou být nastaveny jako zdroj pro přetahování a mohou mít vysvětlivky. Pro přidání ikony použijte `set_icon_from_stock(pozice_ikony, standardní_id)` nebo některou z funkcí `set_icon_from_pixbuf(pozice_ikony, pixbuf)`, `set_icon_from_icon_name(pozicei_kony, název_ikony)`, kde `pozice_ikony` je něco z `Gtk.EntryIconPosition.PRIMARY` (vytvoří ikonu na začátek vstupního pole) nebo `Gtk.EntryIconPosition.SECONDARY` (vytvoří ikonu na konci vstupního pole). Pro nastavení vysvětlivky ikoně použijte `set_icon_tooltip_text("text vysvětlivky")` nebo `set_icon_tooltip_markup("text vysvětlivky ve značkovacím jazyce Pango")`.

# Odkazy k API

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

GtkEntry