如何将Tkinter中与.trace一起使用的entry字段设置为自动完成,但所有字母都用小写字母转换



我在tkinter中有一些条目字段,用户可以用firstnamelastname填充,但我需要从中自动完成其他一些条目。问题是有些自动完成的条目我不想有大写字母。因此,我希望.trace中的自动完成条目用户名和电子邮件中的所有字母都是小写。这能做到吗?

代码:

firstname = StringVar()
lastname = StringVar()
Username = StringVar()
email = StringVar()
display = StringVar()

first_name_entry = Entry(textvariable=firstname,width="30")
last_name_entry = Entry(textvariable=lastname,width="30")
Username_entry = Entry(textvariable=Username,width="30")
email_entry = Entry(textvariable=email,width="50")
display_entry = Entry(textvariable=display,width="30")

first_name_entry.place(x=300,y=100)
last_name_entry.place(x=300,y=180)
Username_entry.place(x=300,y=260)
email_entry.place(x=300,y=330)
display_entry.place(x=15,y=330)
def suggest(*args):
Username_entry.delete(0,'end')
Username_entry.insert(0,firstname.get()+'.'+lastname.get())
email_entry.delete(0,'end')
email_entry.insert(0,lastname.get()+'@example.com')
display_entry.delete(0,'end')
display_entry.insert(0,firstname.get()+' '+lastname.get())
firstname.trace('w',suggest)
lastname.trace('w',suggest)

您只需在get()之后使用lower()方法即可。所以类似于:

Username_entry.insert(0,firstname.get().lower()+'.'+lastname.get().lower())
.... # rest of codes
email_entry.insert(0,lastname.get().lower()+'@example.com')

lower()是一种字符串方法,用于将字符串转换为小写。您还可以使用upper()将字符串转换为大写,依此类推

最新更新