0

我正在学习 Python3 和 tkinter。我试图用 binding 显示密码并用 binding<Button>隐藏密码<ButtonRelease>,但我没有任何解决方案。我所能做的就是显示密码,然后发生错误:

这是我的代码:

import tkinter as tk

def show(e):
    passwd_entry.config(show="")
# def hide(event):
#     passwd_entry.config(show="*")
root = tk.Tk()

passwd_entry = tk.Entry(root, show='*', width=20)
passwd_entry.pack(side=tk.LEFT)

toggle_btn = tk.Button(root, text='Show Password', width=15, command=show)
toggle_btn.pack(side=tk.LEFT)
toggle_btn.bind("<Button>", show)
# toggle_btn.bind("<ButtonRelease>", hide)

root.mainloop()

这是我单击时的错误button

TypeError: show() missing 1 required positional argument: 'e'
4

1 回答 1

0

实例创建需要在tkinter您要调用的函数定义事件之前发生。

还可以使用 lambda 函数来调用里面的 show 函数,bind如下面的代码中所述。它应该有帮助。

import tkinter as tk

root = tk.Tk()

def show():
    passwd_entry.config(show="")
def hide():
    passwd_entry.config(show="*")

passwd_entry = tk.Entry(root, show='*', width=20)
passwd_entry.pack(side=tk.LEFT)

toggle_btn = tk.Button(root, text='Show Password', width=15)
toggle_btn.pack(side=tk.LEFT)
toggle_btn.bind("<ButtonPress>", lambda event:show())
toggle_btn.bind("<ButtonRelease>", lambda event:hide())

root.mainloop()
于 2022-03-05T07:36:32.190 回答