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 FalseRight 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 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: 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 |