在tkinter中操作输入文本值

时间:2015-07-25 10:11:18

标签: python user-interface python-3.x tkinter

我想添加“搜索到此处”这个词!在条目内部,一旦用户开始输入条目就会消失!

就像我们在facebook网页上看到的那样“你在想什么”

from tkinter import *


class Application(Frame):
    def __init__(self, master=NONE):
        Frame.__init__(self, master)
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.frame = Frame(self)
        self.entry = Entry(self.frame)
        self.entry.pack()
        self.frame.pack()    

if __name__ == "__main__":
    root = Tk()
    app = Application(master=root)
    app.mainloop()

2 个答案:

答案 0 :(得分:2)

您可以处理first窗口小部件的关键事件,并在第一个关键事件发生时删除内容:

Entry

要检测我已绑定的第一个更改,并将from tkinter import * class Application(Frame): def __init__(self, master=NONE): Frame.__init__(self, master) self.pack() self.create_widgets() def create_widgets(self): self.frame = Frame(self) self.entry = Entry(self.frame) self.entry.modified = False self.entry.insert(0, "Search Here!") self.entry.bind("<Key>", self.entry_key) self.entry.pack() self.frame.pack() def entry_key(self, event): if not self.entry.modified: self.entry.delete(0, END) self.entry.modified = True if __name__ == "__main__": root = Tk() app = Application(master=root) app.mainloop() 一个名为False的属性初始化为modified小部件实例。当第一个关键事件发生时,将删除输入框的内容,并将Entry属性设置为modified,这将阻止在后续关键事件中清除内容。

答案 1 :(得分:0)

您必须使用&#34; StringVar&#34;设置或获取文本:

from tkinter import *


class Application(Frame):
    def __init__(self, master=NONE):
        Frame.__init__(self, master)
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.frame = Frame(self)
        my_entry = StringVar()
        my_entry.set("Search here")
        self.entry = Entry(self.frame, text=my_entry)
        self.entry.pack()
        self.frame.pack()    

if __name__ == "__main__":
    root = Tk()
    app = Application(master=root)
    app.mainloop()