Я создал класс заполнителя, который принимает два параметра: запись 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()