无法删除Tkinter小部件(由for循环创建)

2024-05-19 10:53:23 发布

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

我创建了各种带有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()

Tags: textlockfortkinterusrloginwindowpas
1条回答
网友
1楼 · 发布于 2024-05-19 10:53:23

首先调用lock_btn.pack(0),然后切换到使用place(...)。因此,小部件由place管理,因为它只能由一个几何体管理器管理。调用pack_forget时没有效果,因为pack不在小部件的控制之下。你知道吗

相关问题 更多 >

    热门问题