有人能回答为什么这玩意儿不管用吗?

2024-10-01 02:34:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我很困惑

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

我只是在玩tkinter,我试图得到一个登录屏幕,其中有一个复选框,切换密码的可见性。我只是不明白了。“show”参数不会根据分配给它的变量而改变,我也不知道为什么。你知道吗

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) 

Tags: textnoneget编程showcolumnrootpassword
1条回答
网友
1楼 · 发布于 2024-10-01 02:34:19

我已经在你的基础上整理了一段代码(这段代码对你来说并不完美,但是…),至少对你的工作有帮助。你的代码是不完整的,我想,它也有一些错误。您必须在小部件中配置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()

相关问题 更多 >