尝试创建密码提示和检查器以允许退出程序

时间:2018-04-05 08:29:22

标签: python python-3.x tkinter

感谢您的关注! 这是我的问题:我有一个有退出选项的菜单栏。单击时,将弹出一个窗口,提示用户输入管理员访问密码,然后再允许他们退出主应用程序 我一遍又一遍地改变了我的代码但仍然遇到了同样的问题 这是我现在的代码

def exitmenu():

def exitmenucheck():
    if passwordentry.get() == actualpassword:
        quit
    else:
        popupmsg("error")

exitmenu= tk.Tk()
exitmenu.wm_title("Administrator Access")

label = ttk.Label(exitmenu, text="Enter Password.", font=NORM_FONT)
label.grid(row=0,column=0)

password = tk.StringVar()
passwordentry = tk.Entry(exitmenu, textvariable=password, show='*')
passwordentry.grid(row=0,column=1)

button = ttk.Button(exitmenu, text="Exit", command=exitmenucheck, width=8)
button.bind('<Enter>',exitmenucheck)
button.grid(row=2,column=1,sticky="s")

这是我输入正确或错误密码时出现的错误

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1562, in __call__
    return self.func(*args)
TypeError: exitmenucheck() takes 0 positional arguments but 1 was given
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1562, in __call__
    return self.func(*args)
TypeError: exitmenucheck() takes 0 positional arguments but 1 was given

抱歉,我2天前才启动python编程,所以这看起来像是一个非常简单的任务,不可能搞砸。 感谢您提前耐心和指导:)

1 个答案:

答案 0 :(得分:1)

这应该actualpassword为字符串'actualpassword',因此通过向其添加parenthesis来更改该部分。

def exitmenucheck():
    if passwordentry.get() == 'actualpassword':
        quit
    else:
        popupmsg("error")

从您的代码中查看此示例

import tkinter as tk
from tkinter import ttk
from tkinter import messagebox   


def exitmenu():
    pass

def exitmenucheck(event=None):
    if passwordentry.get() == "actualpassword":
        exitmenu.destroy()
    else:
        messagebox.showwarning("error", "password incorrect")
       # popupmsg("error")
        print("error")


exitmenu= tk.Tk()
exitmenu.wm_title("Administrator Access")

label = ttk.Label(exitmenu, text="Enter Password.")
label.grid(row=0,column=0)

password = tk.StringVar()
passwordentry = tk.Entry(exitmenu, textvariable=password, show='*')
passwordentry.bind("<Return>", exitmenucheck)
passwordentry.grid(row=0,column=1)

button = ttk.Button(exitmenu, text="Exit", command=exitmenucheck, width=8)
# button.bind('<Enter>',exitmenucheck)
button.grid(row=2,column=1,sticky="s")

exitmenu.mainloop()

你应该bind你的entry小部件而不是button小部件,你应该绑定keyboard enter key而不是Return