我创建了一个占位符类,它带有两个参数,一个tkinter条目和条目文本,或者占位符。最初,该条目配置为显示“•”。当我使用占位符类而不是显示占位符的条目时,字符显示为“•”。我不知道如何解决这个问题,任何帮助都将受到高度赞赏。
以下是我的课程。
from tkinter import *
class Place_Holder:
def __init__(self,entry,place_holder):
self.place_holder=place_holder
self.entry=entry
self.entry.bind("<FocusIn>",self.focus_in)
self.entry.bind("<FocusOut>",self.focus_out)
self.put_text(self.place_holder)
def put_text(self,place_holder):
self.entry.insert(0,place_holder)
self.entry["fg"]="gray"
def focus_in(self,event=0):
if self.entry["fg"]=="gray":
self.entry.delete(0,END)
self.entry["fg"]="black"
def focus_out(self,event=0):
if not self.entry.get():
self.entry.delete(0,END)
self.put_text(self.place_holder)
以下代码是我尝试测试它的方式。
from tkinter import *
from tkinter import ttk
def main():
global root
root=Tk()
testing()
root.mainloop()
def testing():
global frame,variable,entry2
frame=Frame(root)
frame.grid()
variable=IntVar()
label=Label(frame,text="Username:")
label.grid(row=0,column=0,sticky=W)
entry=Entry(frame,width=20)
entry.grid(row=0,column=1,sticky=W)
entry.focus()
label2=Label(frame,text="Password:")
label2.grid(row=1,column=0,sticky=W)
entry2=Entry(frame,width=20,show="•")
entry2.grid(row=1,column=1,sticky=W)
check_but=ttk.Checkbutton(frame,text="Show Password",variable=variable,command=switch)
check_but.grid(row=2,column=0,columnspan=2)
entry1_config=Place_Holder(entry,"Username")
entry2_config=Place_Holder(entry2,"Password")
def switch():
if variable.get()!=1:
entry2.configure(show="")
else:
entry2.configure(show="•")
main()