我只是写了一个程序,它应该让我能够用一个大窗口“锁定”我的屏幕作为我的屏幕分辨率,如果没有给出正确的密码则无法关闭。 所以我的问题是: 我在主窗口上有一个按钮,它创建了第二个窗口和它的小部件。我在第二个窗口上有第二个按钮,它应该在第一个窗口上的第一个按钮创建的第二个窗口上获得给定密码prom的Entry小部件。 当我点击第二个窗口上的第二个按钮时,它无法从第二个窗口的条目小部件中获取文本。
def locking():
password_box["state"] = "disabled"
true_password = password_box.get()
lock = Tk()
lock.configure(bg="grey")
lock.geometry(resolution)
lock.wm_attributes("-topmost", 1)
lock.resizable("False", "False")
lock.overrideredirect(1)
lock_password_box = Entry(lock,
width="30",
justify="center",
show="*")
unlock_button = Button(lock,
text=" Unlock ",
command=unlocking)
lock_password_box = Entry(lock, # HERE THE WIDGET WHICH CAN NOT BE FOUND
width="30",
justify="center",
show="*")
res_x_int = int(res_x)
res_y_int = int(res_y)
middle_x = res_x_int / 2
middle_y = res_y_int / 2
middle_x_box = middle_x - 130
middle_y_box = middle_y - 40
middle_x_button = middle_x - 80
middle_y_button = middle_y
lock_password_box.place(x=str(middle_x_box), y=(middle_y_box))
unlock_button.place(x=str(middle_x_button), y=(middle_y_button))
def unlocking():
given_password = lock_password_box.get() # HERE I CALL IT
if given_password.startswith("__commmand"):
if given_password[11:] == "unlock":
lock.destroy()
password_box["state"] = "enabled"
else:
lock_password_box.insert("")
elif given_password == true_password:
lock.destroy()
password_box["state"] = "enabled"
else:
lock_password_box.insert("")
# AND FINALLY THE ERROR
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\mbilal25tr\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\mbilal25tr\Desktop\project.pyw", line 53, in unlocking
given_password = lock_password_box.get()
NameError: name 'lock_password_box' is not defined
脚本(不长):https://drive.google.com/open?id=0B2caa1PPqDe8NWR1aFYxd09tVzA
我真的不明白为什么会这样。如果有人可以,请帮助。不管怎样,谢谢。