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.01.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