首页 文章

如何在tkinter GUI中的条目中添加文本,然后在用户与小部件交互时消失?

提问于
浏览
1

所以我正在使用tkinter python,我有一个带有Name文本的条目小部件 . 我想仅在单击小部件时删除文本 . 这是我到目前为止:

#Import tkinter to make gui
from tkinter import *
from tkinter import ttk#Sets title and creates gui
root = Tk()
root.title("Identity Form")

#Configures column and row settings and sets padding
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

name=StringVar()
age=StringVar()
gender=StringVar()
#Widgets to put in items, quanitity, and shipping days
name_entry = ttk.Entry(mainframe, width=20, textvariable=name)
name_entry.grid(column=2, row=2, sticky=(W, E))

age_entry2 = ttk.Entry(mainframe, width=20, textvariable=age)
age_entry2.grid(column=2, row=3, sticky=(W, E))

male = ttk.Radiobutton(mainframe, text='Male', variable=gender, value='male')
female = ttk.Radiobutton(mainframe, text='Female', variable=gender, value='female')
other = ttk.Radiobutton(mainframe, text='Other', variable=gender, value='other')

name_entry.insert(0,'Name')

这将创建条目小部件,并在其中包含文本“名称” . 当点击我希望文本消失的方式时 .

2 回答

  • 0
    def reset(*args):
        name_entry.delete(0, END)
    
    name_entry.bind("<Button-1>", reset)
    

    看起来解决方案很简单,我找到了它的变体,但我不知道有必要使用* args或它不起作用 .

  • 0

    您可以通过绑定方法将 name 变量的值设置为空字符串来实现 .

    def reset(event):
        name.set("")
    
    name_entry.bind("<Button-1>", reset)
    

    如果您只想删除 name_entry 中的文本一次,则可以添加if条件,以便仅在 name 的值等于原始值时设置名称 .

    def reset(event):
        if name.get() == initial_text:
            name.set("")
    

    我希望我的回答很有帮助 .

相关问题