按下Tkinter时,输入框文本清晰

时间:2016-01-02 23:02:42

标签: python tkinter

我不确定是否已经问过这个问题,但我有多个输入框,其中包含一段默认文本。我没有尝试设置默认文本,我试图在单击输入框时删除。我希望能够在单击输入框后立即删除默认文本,这样用户就不必这样做了。我想知道是否有人可以分享一个关于如何完成这个的快速示例,以便我可以实现。

    def removeValue(event):
        self.entry.delete(0, 'end')
        return None

    for i in range(1, numberOfStudents + 1):
        for p in range(0,2):
            self.entry = Entry(self.master)
            if p == 0:
                self.entry.insert(0, 'Enter name of student')
                self.entry.place(x = 10, y = (i * 30) + 26)
                self.entry.bind("<Button-1>", removeValue)
            if p == 1:
                self.entry.insert(0, 'Enter predicted')
                self.entry.place(x = (getWidth(master) - 140), y = (i * 30) + 26)
                self.entry.bind("<Button-1>", removeValue)

到目前为止我有这个,但只删除最后一个输入框文本。

2 个答案:

答案 0 :(得分:4)

假设你已经整理了你的默认文本,你想在某处创建一个事件绑定,使用上面评论的一般格式,不知道为什么它不是答案,因为它&#39 ;对了:

import tkinter as tk

root = tk.Tk()
e = tk.Entry(root)
e.insert(0, "some text")

def some_callback(event): # note that you must include the event as an arg, even if you don't use it.
    e.delete(0, "end")
    return None

e.bind("<Button-1>", some_callback)

e.pack()

最后,http://effbot.org是你的朋友: http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

编辑:来自评论的OP的其他信息。 如果您有多个条目并且需要单独清除每个条目,则可以使用

简单地引用调用绑定方法的小组件。
event.widget

您的回调可以按如下方式运作:

def some_callback(event):
    event.widget.delete(0, "end")
    return None

答案 1 :(得分:1)

事件绑定调用的方法被赋予一个事件对象。此对象引用了触发事件的窗口小部件。您可以使用它来清除小部件:

def removeValue(event):
    event.widget.delete(0, 'end')