如何在 python tkinter 的条目或输入字段中使文本模糊和禁用
How to make text faint and disabled in an entry or input field in python tkinter
我试图让文本在后台被禁用。但是当我禁用它时用户也不能写文本
这个问题已经有人问过了,
但这些答案对我来说并不清楚,也不令人满意。
所以我决定post这个问题。
我希望文本类似于大多数网站登录页面上的输入字段,其中输入字段中已经写入了 'Username' 或 'Password' 等文本。
所以文字应该有点微弱,当用户开始输入时,文字应该会消失。所以用户不应该能够复制它并且不需要在输入之前将其删除。
这是我试过的方法,但没有用。
from tkinter import *
root = Tk()
my_entry = Entry(root, width=50)
my_entry.pack()
my_entry.insert(0, "Enter Your Name")
my_entry.configure(state=DISABLED)
root.mainloop()
用户也不能在输入字段中输入文本。
这对你有帮助吗?
from tkinter import *
root = Tk()
my_entry = Entry(root, width=50)
my_entry.pack()
my_entry.insert(0, "Enter Your Name")
my_entry.configure(state=DISABLED)
def on_click(event):
my_entry.configure(state=NORMAL)
my_entry.delete(0, END)
# make the callback only work once
my_entry.unbind('<Button-1>', on_click_id)
on_click_id = my_entry.bind('<Button-1>', on_click)
root.mainloop()
作为 class:
import tkinter as tk
class DefaultEntry(tk.Entry):
def __init__(self, master=None, default_text='', **kw):
super().__init__(master, **kw)
self.insert(0, default_text)
self.configure(state=tk.DISABLED)
self.on_click_id = self.bind('<Button-1>', self.on_click)
def on_click(self, _):
self.configure(state=tk.NORMAL)
self.delete(0, tk.END)
# unregister myself
self.unbind('<Button-1>', self.on_click_id)
root = tk.Tk()
my_entry = DefaultEntry(root, width=50, default_text='Enter your Name')
my_entry.pack()
root.mainloop()
我试图让文本在后台被禁用。但是当我禁用它时用户也不能写文本
这个问题已经有人问过了, 但这些答案对我来说并不清楚,也不令人满意。 所以我决定post这个问题。
我希望文本类似于大多数网站登录页面上的输入字段,其中输入字段中已经写入了 'Username' 或 'Password' 等文本。
所以文字应该有点微弱,当用户开始输入时,文字应该会消失。所以用户不应该能够复制它并且不需要在输入之前将其删除。
这是我试过的方法,但没有用。
from tkinter import *
root = Tk()
my_entry = Entry(root, width=50)
my_entry.pack()
my_entry.insert(0, "Enter Your Name")
my_entry.configure(state=DISABLED)
root.mainloop()
用户也不能在输入字段中输入文本。
这对你有帮助吗?
from tkinter import *
root = Tk()
my_entry = Entry(root, width=50)
my_entry.pack()
my_entry.insert(0, "Enter Your Name")
my_entry.configure(state=DISABLED)
def on_click(event):
my_entry.configure(state=NORMAL)
my_entry.delete(0, END)
# make the callback only work once
my_entry.unbind('<Button-1>', on_click_id)
on_click_id = my_entry.bind('<Button-1>', on_click)
root.mainloop()
作为 class:
import tkinter as tk
class DefaultEntry(tk.Entry):
def __init__(self, master=None, default_text='', **kw):
super().__init__(master, **kw)
self.insert(0, default_text)
self.configure(state=tk.DISABLED)
self.on_click_id = self.bind('<Button-1>', self.on_click)
def on_click(self, _):
self.configure(state=tk.NORMAL)
self.delete(0, tk.END)
# unregister myself
self.unbind('<Button-1>', self.on_click_id)
root = tk.Tk()
my_entry = DefaultEntry(root, width=50, default_text='Enter your Name')
my_entry.pack()
root.mainloop()