2014-06-10 127 views
0

我创建了各种带for循环的Tkinter小部件。除了“lock_btn”小部件外,它们都可以很好地移除。当我按下该按钮时,锁定按钮停留在页面上(尽管该功能中的其余代码可以工作)。我曾尝试使用和不使用全局变量(您看到的代码包含全局变量)。Tkinter小部件无法删除(由for循环创建)

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() 

回答

1

你开始通过调用lock_btn.pack(0),然后切换到使用place(...)。因此,该小部件由地点管理,因为它只能由一个几何管理器管理。当您拨打pack_forget时,它不起作用,因为pack不受控件的控制。

+0

感谢那个男人!任何想法如何我会解决这个问题,仍然能够放置小部件? – user2880853

+0

没关系,我解决了您的初始评论问题。谢谢! – user2880853