Python - Tkinter Entry


Vidžet Entry se koristi za pružanje tekstualnog okvira u jednom redu kako bismo mogli prihvati vrijednost od korisnika. Možemo koristiti widget Entry da prihvatimo tekstualne stringove od korisnika. Može se koristiti samo za jedan red teksta, a za više redova teksta, moramo koristiti tekstualni widget. Sintaksa za korištenje widgeta Entry je:

w = Entry (parent, options) 

Spisak mogućih opcija je dat u sljedećoj tabeli.

Opcije Opis
bg Boja pozadine widgeta.
bd Širina border-a widgeta u pikselima.
cursor Kursor miša će biti promijenjen na strelicu, tačku itd.
exportselection Tekst napisan unutar polja za unos će se automatski kopirati u međukontejner prema zadanim postavkama. Možemo postaviti izbor izvoza na 0 da ovo ne kopiramo.
fg Predstavlja boju teksta.
font Predstavlja tip fonta teksta.
highlightbackground Predstavlja boju koja se prikazuje u oblasti isticanja prelaska kada widget nema fokus za unos.
highlightcolor Predstavlja boju koja se koristi za pravougaonik isticanja prelaska koji je nacrtan oko vidžeta kada ima fokus za unos.
highlightthickness Predstavlja nenegativnu vrijednost koja označava širinu pravougaonika isticanja koji treba nacrtati oko vanjske strane widgeta kada ima fokus za unos.
insertbackground Predstavlja boju koja se koristi kao pozadina u području pokrivenom kursorom za umetanje.
insertborderwidth Predstavlja nenegativnu vrijednost koja označava širinu 3-D border-a koju treba nacrtati oko kursora za umetanje.
insertofftime Predstavlja nenegativnu cjelobrojnu vrijednost koja označava broj milisekundi u kojima bi kursor rebao ostati "off (isključen)" u svakom ciklusu treptanja.
insertontime Određuje nenegativnu cjelobrojnu vrijednost koja označava broj milisekundi u kojima bi kursor trebao ostati "on (uključen)" u svakom ciklusu treptanja.
insertwidth Predstavlja vrijednost koja pokazuje ukupnu širinu kursora za umetanje. Vrijednost može imati bilo koji od oblika prihvatljivih za Tk_GetPixels.
justify Određuje kako je tekst organizovan ako tekst sadrži više redova.
relief Određuje tip ivice. Njegova zadana vrijednost je FLAT.
selectbackground Boja pozadine odabranog teksta.
selectborderwidth Širina border-a za prikaz oko odabranog zadatka.
selectforeground Boja fonta odabranog zadatka.
show Koristi se za prikaz teksta unosa nekog drugog tipa umjesto stringa. Na primjer, lozinka se upisuje pomoću zvjezdica (*).
textvariable Postavljena je na instancu StringVar za preuzimanje teksta iz unosa.
width Širina prikazanog teksta ili slike.
xscrollcommand Vidžet za unos se može povezati sa horizontalnom trakom za pomeranje ako želimo da korisnik unese više teksta od stvarne širine widgeta.

Primjer broj 1: Tkinter Entry

# !/usr/bin/python3  
  
from tkinter import *  
  
# Kriranje okvira i podešavanje veličine
top = Tk()  
top.geometry("400x250")  

# Kriranje Label-a za unos podataka korisnika  
name = Label(top, text = "Ime").place(x = 30,y = 50)  
email = Label(top, text = "Email").place(x = 30, y = 90)  
password = Label(top, text = "Lozinka").place(x = 30, y = 130)  
  
# Kriranje dugmeta "Pošalji"  
sbmitbtn = Button(top, text = "Pošalji",activebackground = "pink", activeforeground = "blue").place(x = 30, y = 170)  
  
# Smještanje Label-a nu naš okvir
e1 = Entry(top).place(x = 80, y = 50)  
e2 = Entry(top).place(x = 80, y = 90)  
e3 = Entry(top).place(x = 95, y = 130)  
  
top.mainloop() 

Prikaz koda iz gornjeg primjera izgledaće ovako:



Metode Entry vidžeta

Python pruža različite metode za konfigurisanje podataka upisanih unutar widgeta. Postoje metode koje pruža widget Entry, a one su prikazane u sljedećoj tabeli.

Metod Opis
delete(first, last = none) Koristi se za brisanje navedenih znakova unutar widget-a.
get() Koristi se za pisanje teksta unutar widget-a.
icursor(index) Koristi se za promjenu pozicije kursora. Možemo odrediti indeks znaka ispred kojeg će se postaviti kursor.
index(index) Koristi se za postavljanje kursora lijevo od znaka napisanog na specifikovanom indeksu.
insert(index,s) Koristi se za umetanje specifikovanog stringa ispred karaktera koji se nalazi na navedenom indeksu.
select_adjust(index) Uključuje izbor karaktera prisutnog u navedenom indeksu.
select_clear() Briše odabir ako je neki odabir obavljen.
select_form(index) Postavlja poziciju indeksa sidra na znak specifikovan indeksom.
select_present() Vraća true ako je neki tekst u unosu odabran, inače vraća false.
select_range(start,end) Bira znakove koji će postojati između navedenog raspona.
select_to(index) Bira sve znakove od početka do navedenog indeksa.
xview(index) Koristi se za povezivanje vidžeta za unos sa horizontalnom trakom za pomeranje.
xview_scroll(number,what) Koristi se za horizontalno pomicanje unosa.

Primjer broj 2: Tkinter Entry - jednostavni digitron

import tkinter as tk  
from functools import partial  
   
   
def call_result(label_result, n1, n2):  
    num1 = (n1.get())  
    num2 = (n2.get())  
    result = int(num1)+int(num2)  
    label_result.config(text="Rezujtat sabiranja je = %d" % result)  
    return  
   
root = tk.Tk()  
root.geometry('400x200+100+200')  
root.title('Digitron')  
   
number1 = tk.StringVar()  
number2 = tk.StringVar()  
  
labelNum1 = tk.Label(root, text="A").grid(row=1, column=0)   
labelNum2 = tk.Label(root, text="B").grid(row=2, column=0)  
 
labelResult = tk.Label(root)  
labelResult.grid(row=7, column=2)  
  
entryNum1 = tk.Entry(root, textvariable=number1).grid(row=1, column=2)  
entryNum2 = tk.Entry(root, textvariable=number2).grid(row=2, column=2)  
  
call_result = partial(call_result, labelResult, number1, number2)  
  
buttonCal = tk.Button(root, text="Saberi", command=call_result).grid(row=3, column=0)  
  
root.mainloop()

Prikaz koda iz gornjeg primjera izgledaće ovako:




Primjer broj 3: Tkinter Entry - forma za prijavu

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo

# Root window
root = tk.Tk()
root.geometry("300x150")
root.resizable(False, False)
root.title('Forma za prijavu')

# Pohranjivanje email adrese i lozinke
email = tk.StringVar()
password = tk.StringVar()


def login_clicked():
    """ Povratni poziv kada se klikne na dugme za prijavu
    """
    msg = f'Vaš email je: {email.get()}, a lozinka je: {password.get()}'
    showinfo(
        title='Unesene infromacije',
        message=msg
    )

# Okvir za prijavu
signin = ttk.Frame(root)
signin.pack(padx=10, pady=10, fill='x', expand=True)

# Email
email_label = ttk.Label(signin, text="Email adresa:")
email_label.pack(fill='x', expand=True)

email_entry = ttk.Entry(signin, textvariable=email)
email_entry.pack(fill='x', expand=True)
email_entry.focus()

# Lozinka
password_label = ttk.Label(signin, text="Lozinka:")
password_label.pack(fill='x', expand=True)

password_entry = ttk.Entry(signin, textvariable=password, show="*")
password_entry.pack(fill='x', expand=True)

# Dugme za prijavu
login_button = ttk.Button(signin, text="Prijavi se", command=login_clicked)
login_button.pack(fill='x', expand=True, pady=10)

root.mainloop()

Prikaz koda iz gornjeg primjera izgledaće ovako: