Python Forum
Always lowercase entry in tkinter - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: Always lowercase entry in tkinter (/thread-25969.html)



Always lowercase entry in tkinter - ReturnName - Apr-17-2020

Hi, I'd like to have my entry always in lowercase and with only letters allowed. This is the code I've come up with:

def lowercase_letter_entry(P):
   if P.isalpha() or P == "":
     if P.islower():
        return True
     else:
      if not P.islower():
       P.get()lower()
       return True
   else:
    messagebox.showwarning("Warning","Only letters are allowed")
    return False
Right now the "check if entry are letters or not" is working but self.world.get() isn't in lowercase. this is how I'm using it
self.world = StringVar(self)
        self.world.set('')
        self.world=Entry(self,textvariable = self.world, width=280, bg='WHITE')  
        self.world.place(relx=0.19, rely=0.24, height=25, width=160) e
        callback_world = self.register(lowercase_letter_entry) 
        self.world.configure(validate="key", validatecommand=(callback_world, "%P"))
        print(self.world.get())
Can somebody help me? Thank you


RE: Always lowercase entry in tkinter - Larz60+ - Apr-17-2020

make a method

def set_lower(self, event):
   zz.set(self.wordld.get().lower())

# replace line 6 with
self.world.bind("<KeyRelease>", set_lower)
there are other issues here:
the Entry widget cannot be same as StringVar
also you have some indentation issues.
and you will have to alter code above (set zz = to new StringVar nane), and textvariable part of entry.


RE: Always lowercase entry in tkinter - deanhystad - Apr-17-2020

The validator prevents invalid entries, it does not correct. You validator should return True if the P string is empty or an upper case alpha, otherwise it should return False. Changing the P string inside the validator is not going to have any effect. As mentioned before, P is a str, not the StringVar associated with the widget. P.get() throws an error because str.get() is not valid.


RE: Always lowercase entry in tkinter - PeroPuri - Apr-17-2020

(Apr-17-2020, 11:01 AM)Larz60+ Wrote: make a method

def set_lower(self, event):
   zz.set(self.wordld.get().lower())

# replace line 6 with
self.world.bind("<KeyRelease>", set_lower)
there are other issues here:
the Entry widget cannot be same as StringVar
also you have some indentation issues.
and you will have to alter code above (set zz = to new StringVar nane), and textvariable part of entry.

I've tried to use it:
        def set_lower(self, event):
         one_world.set(self.name.get().lower())

        self.world = StringVar(self)
        self.world.set('')
        self.world=Entry(self,textvariable = self.world, width=280, bg='WHITE')
        self.world.place(relx=0.2, rely=0.05, height=25, width=100)
        callback_world = self.register(set_lower) 
        self.world.bind("<KeyRelease>", set_lower)
        print(one_world)
I've tried this and it is not working. Also I've a question: I'll need to use the .delete function on the lowered case entry. Could I use it with this code?
Thank you again


RE: Always lowercase entry in tkinter - deanhystad - Apr-17-2020

Just rewrite your validator:
def lowercase_letter_entry(P):
   return (P.isalpha() and P.islower()) or P == ""



RE: Always lowercase entry in tkinter - PeroPuri - Apr-17-2020

(Apr-17-2020, 01:39 PM)deanhystad Wrote: Just rewrite your validator:
def lowercase_letter_entry(P):
   return (P.isalpha() and P.islower()) or P == ""

Thank you it worked great! I'm just a little bit afraid that it could increase the input error since someone could not realize that they are not typing. Is there a way to get the entry with eventual uppercase and then turn it all in lower case? Thank you


RE: Always lowercase entry in tkinter - deanhystad - Apr-17-2020

If you want you can play a an invalid key ding or display a message like in your first example.

Let the user type upper/lower. It is easy to convert when you finally use the value.


RE: Always lowercase entry in tkinter - joe_momma - Apr-17-2020

the entry widget has a validate entry command here's a link to stackoverflow thread validate entry the first example by brian oakley shows lowercase only and other options.


RE: Always lowercase entry in tkinter - PeroPuri - Apr-18-2020

Thank you all, I've solved my problem! Have a nice day