Я хотел бы добавить что-то к ответам, что не было сказано. Как сказал 9jera, мы можем сделать виджет Entry ясным только тогда, когда он видит текст по умолчанию вместо метода «firstclick», используемого Leo Tenenbaum.
Мы также можем добавить вторую функцию для пополнения виджета Entry, если пользователь переключил фокус на другой виджет, не набрав ничего.
Это может быть достигнуто следующим образом:
import Tkinter as tk
def on_entry_click(event):
"""function that gets called whenever entry is clicked"""
if entry.get() == 'Enter your user name...':
entry.delete(0, "end") # delete all the text in the entry
entry.insert(0, '') #Insert blank for user input
entry.config(fg = 'black')
def on_focusout(event):
if entry.get() == '':
entry.insert(0, 'Enter your username...')
entry.config(fg = 'grey')
root = tk.Tk()
label = tk.Label(root, text="User: ")
label.pack(side="left")
entry = tk.Entry(root, bd=1)
entry.insert(0, 'Enter your user name...')
entry.bind('<FocusIn>', on_entry_click)
entry.bind('<FocusOut>', on_focusout)
entry.config(fg = 'grey')
entry.pack(side="left")
root.mainloop()
Наконец, я также добавил серый цвет для текста по умолчанию и черный к одной написанной пользователем, только для тех, кто задавался вопросом об этом. Единственная проблема, которую я вижу здесь, заключается в том, что если пользователь на самом деле вручную вводит там Enter your user name...
, фокус и снова, текст будет удален, даже если он был написан самим пользователем. Одно из решений, о котором я думал, - это изменить оператор if, чтобы он получил цвет вместо текста по умолчанию перед удалением чего-либо. Если цвет серый, он может продолжить и удалить его. Иначе это не будет. Тем не менее, я не нашел способ получить цвет текста. Если кто-нибудь знает об этом, пожалуйста, дайте мне знать!
Duplicate http://stackoverflow.com/questions/27820178/how-to-add-placeholder-in-a-text-field-in-tkinter? –
Вы не нашли ни одного параметра или способа удалить данные или поместить курсор в текстовое поле? Где ты посмотрел? Он документирован во многих местах (например: http://effbot.org/tkinterbook/entry.htm#Tkinter.Entry.insert-method, http://effbot.org/tkinterbook/entry.htm#Tkinter.Entry.delete- метод) –