我创建了各种带有for循环的Tkinter小部件。除了“lock_btn”小部件之外,它们都可以很好地删除。当我按下该按钮时,锁定按钮保持在页面上(尽管函数中的其余代码可以工作)。我试过使用和不使用globals(您看到的代码包括globals)。你知道吗
import tkinter
import tkinter.messagebox
#Setting properties for the window
window = tkinter.Tk()
window.title("Shutdown Timer")
window.geometry("250x300")
window.configure(background="black")
def Login():
for x in range(0,5):
login_window[x].pack_forget()
def Auth():
if usr.get() == "isensedemons":
if pas.get() == password:
Login()
else:
tkinter.messagebox.showinfo("Login Error", "Incorrect Username or Password")
else:
tkinter.messagebox.showinfo("Login Error", "Incorrect Username or Password")
def Lock():
global lock_btn
for x in range(0,1):
lock_btn.pack_forget()
for x in range(0,5):
login_window[x].pack()
lock_btn = tkinter.Button(window, text="Lock", fg="white", bg="black", command=Lock)
lbl_usr = tkinter.Label(window, text="Username", fg="white", bg="black")
usr = tkinter.Entry(window)
lbl_pas = tkinter.Label(window, text="Password", fg="white", bg="black")
pas = tkinter.Entry(window, show="•")
btn = tkinter.Button(window, text="Authenticate", fg="white", bg="black", command=Auth)
password = "password"
login_window = [lbl_usr,usr,lbl_pas,pas,btn]
class Create():
lock_btn.pack()
lock_btn.place(rely=1, relx=1, anchor="se")
Create()
#Starts the Program
window.mainloop()
首先调用
lock_btn.pack(0)
,然后切换到使用place(...)
。因此,小部件由place管理,因为它只能由一个几何体管理器管理。调用pack_forget
时没有效果,因为pack
不在小部件的控制之下。你知道吗相关问题 更多 >
编程相关推荐