我正在尝试使用TKinter制作地址簿。我有“姓名,年龄,电话等”的输入字段。每个文本里面都有文字,表明每个文本是什么。因此,在名称输入字段中,它显示“输入名称”。我想要的是,当有人点击名称输入字段开始输入时,它会删除当前在那里的文本。我知道我需要创建一个函数来清除这个条目,然后将它绑定到输入字段,但是我被卡住了。
您可以在底部看到我尝试使用'def clearEvent'并尝试将其绑定到TextField。我的问题是def clearEvent函数低于其他所有函数并且需要位于顶部吗?还是我犯了其他错误?
from Tkinter import *
import sqlite3
class Hello():
def __init__(self, master):
frame=Frame(master, width=80, height=50)
frame.pack()
self.text = Label(frame, text=" ")
self.text.pack()
self.text.grid(row=0, sticky=W)
self.lab = Label(frame, text="name")
self.lab.pack(side=LEFT)
self.lab.grid(row=1)
self.TextField = Entry(frame, text = "name", width=30)
self.TextField.insert(0, "Enter Name")
self.TextField.pack()
self.TextField.grid(row=1)
self.TextField.bind("<Enter>", clearEvent)
self.TextField2 = Entry(frame, text = "age", width=30)
self.TextField2.insert(0, "Enter Age")
self.TextField2.pack()
self.TextField2.grid(row=2)
self.TextField3 = Entry(frame, text = "phone", width=30)
self.TextField3.insert(0, "Enter Phone #")
self.TextField3.pack()
self.TextField3.grid(row=3)
self.TextField4 = Entry(frame, text = "fblink", width=30)
self.TextField4.insert(0, "Enter Facebook Link")
self.TextField4.pack()
self.TextField4.grid(row=4)
self.btn=Button(frame, text='Add', command=self.add_note)
self.btn.pack()
self.btn.grid(row=5, rowspan=1, sticky="w")
self.showbtn = Button(frame, text='Update', command=self.show_notes)
self.showbtn.pack()
self.showbtn.grid(row=5, rowspan=1, sticky="")
self.delbtn = Button(frame, text='Delete', command=self.del_notes)
self.delbtn.pack()
self.delbtn.grid(row=5, rowspan=1, sticky="e")
self.content=Listbox(master, width=50)
self.content.pack()
def clearEvent(self, event):
self.TextField.delete(0,END)
答案 0 :(得分:0)
您已使用 ENTER 绑定文本字段,而不是鼠标单击。 其他一切似乎都很好
答案 1 :(得分:0)
鼠标进入窗口小部件时会触发<Enter>
事件。你说你想在用户点击小部件时清除它,这是一个不同的事件。您应绑定到<1>
,当用户在窗口小部件中单击鼠标左键时将触发该<FocusIn>
。更好的是,绑定到{{1}}事件,无论是通过点击还是用户按下标签,焦点移动到该窗口小部件时都会触发该事件。
但是,我认为你会意识到这不会给用户带来良好的体验。如果他们填写表格,然后意识到他们在其中一个领域犯了拼写错误怎么办?他们点击该字段进行编辑和BOOM!无论什么都没有了,他们必须重新整理整个领域。
您可能想重新考虑这个计划。例如,当存在占位符文本时,您可能希望前景色为浅灰色。然后,在您的功能中,您首先检查颜色是什么。如果它是黑色的,什么也不做。它是浅灰色,删除文本,然后确保将颜色设置为黑色,因此下次用户点击时,文本不会被删除。