Sissejuhatus
Tkinter on Pythoni avatud lähtekoodiga graafilise kasutajaliidese (GUI) teek ja see on oluline tööriist töölauarakenduste loomiseks. Üks levinumaid Tkinteri kasutusviise on selliste vormide loomine, mis nõuavad kasutaja sisestusvidinatesse, näiteks tekstiväljadesse. Nende sisestusvidinate loomise ja nendega töötamise oluline aspekt on fookuse käsitlemine: määrata kindlaks, milline rakenduse osa saab kasutajalt sisendi klaviatuurisündmuste ilmnemisel. See artikkel annab põhjaliku ülevaate sisestusvidinate fookuse haldamisest Tkinteriga ja selgitab üksikasjalikult koodi erinevaid komponente. Lisaks arutatakse seotud teeke ja funktsioone, mis mängivad olulist rolli Tkinteri kasutamisel GUI arendamiseks.
Fookuse mõistmine Tkinteris ja sisestusvidinates
Rakenduste arendamisel Tkinteri abil on oluline mõista fookuse kontseptsiooni. Fookus viitab GUI elemendile, mis praegu saab klaviatuuri sisendit. Ainult ühel vidinal saab korraga olla fookus. Tavaliselt näidatakse fokuseeritud vidinat visuaalselt, näiteks tõstes esile teksti või kuvades tekstisisestusväljal vilkuva kursori.
- Fookuse põhiülesanne on tagada, et kasutaja saaks intuitiivselt suhelda rakenduse vastavate osadega.
- Töölauarakenduste puhul on fookuse haldamine kasutajakogemuse oluline aspekt. Kui kasutajad näiteks vormis navigeerivad, peaksid nad suutma sisestusväljade vahel sujuvalt ja segaduseta liikuda.
Fookuse haldamiseks sisestusvidinates pakub Tkinter mitmeid meetodeid, nagu fokuss_set() ja focus_get().
Lahendus: fookuse haldamine Tkinteri sisestusvidinates
Esmane lahendus sisestusvidinate fookuse haldamiseks on kasutada Tkinteri pakutavaid funktsioone focus_set() ja focus_get(). Siin on näide nende funktsioonide rakendamisest.
import tkinter as tk def focus_next(event): event.widget.tk_focusNext().focus_set() root = tk.Tk() e1 = tk.Entry(root) e1.pack() e1.bind("<Tab>", focus_next) e2 = tk.Entry(root) e2.pack() e2.bind("<Tab>", focus_next) root.mainloop()
Ülaltoodud koodis impordime esmalt mooduli tkinter ja loome lihtsa funktsiooni focus_next(). See funktsioon võtab sisendiks sündmuse ja kasutab meetodeid "tk_focusNext()" ja "focus_set()", et seada fookus järgmisele sisestuse vidinale. Seejärel loome Tkinteri akna (juur) ja kaks sisestusvidinat, e1 ja e2. Seome iga sisestusvidinaga