Как правильно сделать так, чтобы виджет записи имел заполнитель при использовании параметра show в tkinter? - PullRequest
0 голосов
/ 19 мая 2018

Я создал класс заполнителя, который принимает два параметра: запись 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()  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...