有人可以回答为什么这个Tkinter不起作用?

时间:2018-03-11 05:07:06

标签: python checkbox tkinter passwords python-3.6

我很困惑

请记住,我是编程/ python的初学者,所以如果我的代码无组织或措辞不当,请忽略它,我会变得更好lol

我正在玩tkinter而我正试图获得一个登录屏幕,其中有一个复选框可以切换密码的可见性。我不再理解了。 "显示"参数不会根据分配的变量而改变,我也不知道为什么。

showPassword = IntVar()
show = None

def apply():
    print(showPassword.get())
    sspass = showPassword.get()
    print(type(sspass))
    if sspass == 1:
        show = None
    elif sspass == 0:
        show = "*"


spB = Checkbutton(root, text="Toggle Show Password", variable=showPassword).grid(row=10, column=1)

applyButton = Button(root, text="Apply", command=apply).grid(column=1, row=5)

Password = entry(root, show=show) 

1 个答案:

答案 0 :(得分:0)

我已经安排了一段代码(这对你来说并不完美,但是......)基于你的代码至少可以帮助你进步。我认为你的代码不完整,它也有一些错误。您必须在窗口小部件中配置show参数。更改show var不会对小部件执行任何操作。 您必须使用widget['show'] = somevalue表单。或.configure窗口小部件方法。对于这两者,您需要一个小部件参考。如果您在创建它的同一行中对窗口小部件进行网格化,grid将不返回任何内容,因此您将其松开。分两步打破,并在创建时保持小部件的引用(第一步)。 entry实际上称为Entry。这些是我看到的最常见的错误。

from tkinter import Button, Checkbutton, Entry, Tk, IntVar

root = Tk()

showPassword = IntVar()
show = None

def apply():
    print(showPassword.get())
    sspass = showPassword.get()
    print(type(sspass))
    if sspass == 1:
        Password['show'] = "" 
    elif sspass == 0:
        Password['show'] = "*"
    Password.update()


spB = Checkbutton(root, text="Show Password", variable=showPassword).grid(row=10, column=1)

applyButton = Button(root, text="Apply", command=apply).grid(column=1, row=5)

Password = Entry(root, show=show)
Password.grid(row=3, column=1)

root.mainloop()