0

I'm having trouble with limiting length of a string in a entry widget.

I saw several articles about validatecommand but didn't quiet understand them.

Can anyone please explain to me how to use the feature or if there is any other better ways to do it?

I put my code below

from tkinter import *
class Window:
def __init__(self, master):
    self.master = master
    master.title("password")
    master.geometry("1430x1000")
    master.label = Label(master, text="Enter the password and press the button to save it", font=("Times", 30, "bold"), relief=RIDGE, bd=6, bg="grey")
    master.label.grid(row=0, column=1, padx=3, ipadx=3, pady=3, sticky=W+E)
    Ent.entry(master)
    Save.button(master)
    global if_entered
    global password_display
    if_entered = Label(master, text="",font=("Arial", 25) )
    if_entered.grid(row=3, column=1)
    password_display = Label(master, text="", font=("Arial", 25))
    password_display.grid(row=4, column=1)

class Ent:
def entry(self):
    global aa
    aa = StringVar()
    global entered_password
    entered_password = Entry(self, font=("Arial", 30), textvariable=aa)
    entered_password.grid(row=1, column=1)
class Save:
def button(self):
    button_save = Button(self, text="save", command=Save.save_callback)
    button_save.grid(row=2, column=1)
    Label(self, text="Your new password                           :", font=("Arial", 20, "bold")).grid(column=0, row=4, ipadx=0)
def save_callback(self=None):
    global password
    password = aa.get()
    if len(password) <1: #0
        print("A")
        if_entered.configure(text="not entered", font=("Arial", 25))
        if_entered.grid(row=3, column=1)
        password_display.configure(text="none entered",font=("Arial", 25), bg="yellow")
        password_display.grid(row=4, column=1)

    elif len(password) >0: #bigger than 0
        if_entered.configure(text="password saved", font=("Arial",25))
        if_entered.grid(row=3, column=1)
        print(password)
        password_display.configure(text=password, font=("Arial", 25), bg="yellow")
        password_display.grid(row=4, column=1)
root = Tk()
win = Window(root)
root.mainloop()
Lafexlos
  • 7,618
  • 5
  • 38
  • 53
7029279
  • 485
  • 1
  • 6
  • 15

0 Answers0