如何在tkinter ENTRY中突出显示预先输入的文本,以便用户只需键入即可(无需选择、删除)



此处没有尝试使用tkinter创建一个简单条目,所以预先输入的文本";在此处输入您的姓名"突出显示。然后,用户只需键入自己的姓名(或点击delete删除内容…(有什么简单的参数/方法可以和ENTRY一起使用吗?

from tkinter import *
root = Tk()
lbl1 = Label ( root, text = "Let's Play together")
lbl2 = Label ( root, text = "What's your Name ? ")
lbl1.grid( row=0, column=0)
lbl2.grid (row=1, column=0)

nameplayer = Entry(root, width=25, )
nameplayer.insert(0,"Enter your name here ")
nameplayer.grid(row=2, column=0)
root.mainloop()

谢谢!!

使用Entry.selection_range可以完成自动选择文本

class Focus(event):
nameplayer.selection_range(0, END)
nameplayer.bind("<FocusIn>", Focus)

这将在用户单击条目小部件时选择所有文本。希望这能奏效:(

我建议您编写一个函数并为Entry创建一个占位符。然后用户只需点击并写下他/她的名字。不需要删除前文本,然后写下名称
使用此函数click()定义提示或实际占位符:

from tkinter import *
root = Tk()
lbl1 = Label(root, text = "Let's Play together")
lbl2 = Label(root, text = "What's your Name?")
lbl1.grid(row=0, column=0)
lbl2.grid(row=1, column=0)
nameplayer = Entry(root, width=25, )
nameplayer.insert(0, 'Enter your name here')
nameplayer.grid(row=2, column=0)
def click(event):
nameplayer.configure(state=NORMAL)
nameplayer.delete(0, END)
nameplayer.unbind('<Button-1>', clicked)

clicked = nameplayer.bind('<Button-1>', click)
root.mainloop()

LAMBDA

nameplayer.bind('<FocusIn>', lambda x: nameplayer.selection_range(0, END))

最新更新