Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在tk.条目中显示灰显的默认文本_Python_Tkinter_Tkinter Entry - Fatal编程技术网

Python 在tk.条目中显示灰显的默认文本

Python 在tk.条目中显示灰显的默认文本,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我想知道如何在下面的代码中定义的输入框中添加某种背景文本: 该框可能会显示“示例:Joe Bloggs”,但会变灰,然后在用户单击框内时删除?希望这不是太棘手 # ************ Retrieve user's Full name ************ tk.Label(self, text='First and last name:').grid(sticky='e') # Label self.full_name_entry = tk.Entr

我想知道如何在下面的代码中定义的输入框中添加某种背景文本:

该框可能会显示“示例:Joe Bloggs”,但会变灰,然后在用户单击框内时删除?希望这不是太棘手

        # ************ Retrieve user's Full name ************
    tk.Label(self, text='First and last name:').grid(sticky='e') # Label

    self.full_name_entry = tk.Entry(self, bg='white', width=30) # Entry box
    self.full_name_entry.grid(row=1, column=1, pady=15, columnspan=2) # Entry box placement
您需要:

  • 使用
    tk.Entry.insert
    将默认文本添加到
    Entry
    小部件中
  • 将前景色设置为“灰色”
  • 当条目获得焦点时,默认值被删除,前景设置为“黑色”
  • 你输入文本
  • 按return键后,将提取条目的值,然后用灰色的默认文本重置条目
  • 退出焦点也会将条目重置为默认灰色(您可能希望选择“避免”,因为如果您使条目失去焦点,部分条目将被删除;例如,单击框外)
下面是代码的样子

import tkinter as tk

def handle_focus_in(_):
    full_name_entry.delete(0, tk.END)
    full_name_entry.config(fg='black')

def handle_focus_out(_):
    full_name_entry.delete(0, tk.END)
    full_name_entry.config(fg='grey')
    full_name_entry.insert(0, "Example: Joe Bloggs")

def handle_enter(txt):
    print(full_name_entry.get())
    handle_focus_out('dummy')

root = tk.Tk()

label = tk.Label(root, text='First and last name:')
label.grid(sticky='e')

full_name_entry = tk.Entry(root, bg='white', width=30, fg='grey')
full_name_entry.grid(row=1, column=1, pady=15, columnspan=2)

full_name_entry.insert(0, "Example: Joe Bloggs")

full_name_entry.bind("<FocusIn>", handle_focus_in)
full_name_entry.bind("<FocusOut>", handle_focus_out)
full_name_entry.bind("<Return>", handle_enter)


root.mainloop()
将tkinter作为tk导入
def句柄焦点输入(uu):
全名项。删除(0,tk.END)
完整的\u name\u entry.config(fg='black')
def handle_focus_out(u):
全名项。删除(0,tk.END)
完整的\u name\u entry.config(fg='grey')
完整名称项。插入(0,“示例:Joe Bloggs”)
def句柄输入(txt):
打印(完整的\u name\u entry.get())
处理焦点输出('dummy')
root=tk.tk()
label=tk.label(根,text='First and last name:')
label.grid(sticky='e')
全名\u entry=tk.entry(根,背景为白色,宽度为30,前景为灰色)
完整的项目名称网格(行=1,列=1,pady=15,列span=2)
完整名称项。插入(0,“示例:Joe Bloggs”)
完整的\u名称\u条目.bind(“,句柄\u焦点\u in)
全名\u项。绑定(“,句柄\u焦点\u出)
完整的\u名称\u项。绑定(“,句柄\u项)
root.mainloop()
以下是打开窗口时的外观:

聚焦于
条目
小部件后,示例文本被删除,字体颜色变为黑色;填写条目后,该方面是:

您需要:

  • 使用
    tk.Entry.insert
    将默认文本添加到
    Entry
    小部件中
  • 将前景色设置为“灰色”
  • 当条目获得焦点时,默认值被删除,前景设置为“黑色”
  • 你输入文本
  • 按return键后,将提取条目的值,然后用灰色的默认文本重置条目
  • 退出焦点也会将条目重置为默认灰色(您可能希望选择“避免”,因为如果您使条目失去焦点,部分条目将被删除;例如,单击框外)
下面是代码的样子

import tkinter as tk

def handle_focus_in(_):
    full_name_entry.delete(0, tk.END)
    full_name_entry.config(fg='black')

def handle_focus_out(_):
    full_name_entry.delete(0, tk.END)
    full_name_entry.config(fg='grey')
    full_name_entry.insert(0, "Example: Joe Bloggs")

def handle_enter(txt):
    print(full_name_entry.get())
    handle_focus_out('dummy')

root = tk.Tk()

label = tk.Label(root, text='First and last name:')
label.grid(sticky='e')

full_name_entry = tk.Entry(root, bg='white', width=30, fg='grey')
full_name_entry.grid(row=1, column=1, pady=15, columnspan=2)

full_name_entry.insert(0, "Example: Joe Bloggs")

full_name_entry.bind("<FocusIn>", handle_focus_in)
full_name_entry.bind("<FocusOut>", handle_focus_out)
full_name_entry.bind("<Return>", handle_enter)


root.mainloop()
将tkinter作为tk导入
def句柄焦点输入(uu):
全名项。删除(0,tk.END)
完整的\u name\u entry.config(fg='black')
def handle_focus_out(u):
全名项。删除(0,tk.END)
完整的\u name\u entry.config(fg='grey')
完整名称项。插入(0,“示例:Joe Bloggs”)
def句柄输入(txt):
打印(完整的\u name\u entry.get())
处理焦点输出('dummy')
root=tk.tk()
label=tk.label(根,text='First and last name:')
label.grid(sticky='e')
全名\u entry=tk.entry(根,背景为白色,宽度为30,前景为灰色)
完整的项目名称网格(行=1,列=1,pady=15,列span=2)
完整名称项。插入(0,“示例:Joe Bloggs”)
完整的\u名称\u条目.bind(“,句柄\u焦点\u in)
全名\u项。绑定(“,句柄\u焦点\u出)
完整的\u名称\u项。绑定(“,句柄\u项)
root.mainloop()
以下是打开窗口时的外观:

聚焦于
条目
小部件后,示例文本被删除,字体颜色变为黑色;填写条目后,该方面是:


欢迎来到堆栈溢出。我已经删掉了你的新请求。您考虑输入框的HTML5占位符属性是正确的。欢迎使用堆栈溢出。我已经删掉了你的新请求。您考虑输入框的HTML 5占位符属性是正确的。您可以使用
root.focus()
从输入小部件手动删除焦点,而不是执行
handle\u focus\u out('dummy')
。这样做的好处是焦点实际上丢失了(如果在按Enter键后键入,它不会出现在条目中),FocusOut事件会自动触发。另外,在
handle\u focus\u out()
中,只有当小部件为空时,我才会返回到占位符,并在
handle\u enter()
函数中清空小部件。现在只有一个条目,但如果有更多条目,这不会有太大的区别。同意@fhdrsdg。我会让OP决定他想要的确切行为;此时此刻,它还未被定义,向前冲可能是徒劳的。真的,真的。考虑到问题的广泛性,你的答案已经相当广泛了。我们已经取得了进展!!谢谢你。我就是不知道该把定义放在哪里?我有示例文本,它以灰色显示,当单击时,它会一直保持灰色,但无论我在哪里添加定义,它都会出错?什么定义?您可以使用
root.focus()
从条目小部件手动移除焦点,而不是执行
handle\u focus\u out('dummy')
。这样做的好处是焦点实际上丢失了(如果在按Enter键后键入,它不会出现在条目中),FocusOut事件会自动触发。另外,在
handle\u focus\u out()
中,只有当小部件为空时,我才会返回到占位符,并在
handle\u enter()
函数中清空小部件。现在只有一个条目,但如果有更多条目,这不会有太大的区别。同意@fhdrsdg。我会让OP决定他想要的确切行为;此时此刻,它还未被定义,向前冲可能是徒劳的。真的,真的。考虑到问题的广泛性,你的答案已经相当广泛了。我们已经取得了进展!!谢谢你。我就是不知道