无法关闭 window 并保持其他打开

Can't close a window and keep other open

我正在尝试打开第二个 window 然后 运行 一些代码并关闭第二个 window 按钮事件。我已经尝试了所有可以找到的示例,但仍然出现属性错误。我对此很陌生。

我删除了大部分代码以便于阅读。

#   ADD NEW PASSWORD
def add_pass():

    add_pass = Toplevel()
    add_pass.title("Enter New Password")
    add_pass.geometry('500x700')
    # add_pass.resizable(0, 0)

    
    Add_Button = Button(add_pass, text="Enter", font=("normal", 14), 
    command=add_butt)
    Add_Button.grid(row=12, column=2, pady=30)
    
    
def add_butt():

    print(Person_Entry.get())

    # Create a database or connect to one
    conn = sqlite3.connect('Pass.db')

    c = conn.cursor()                
                        
    # WRITE TEXT BOXES TO SQLITE3 DB USING VARIABLES. 
    PassData = [(Seq_Entry.get(), Person_Entry.get(), Name_Entry.get(), 
    URL_Entry.get(), Username_Entry.get(), Password_Entry.get(), Hint1_Entry.get(), 
    Hint2_Entry.get(), Hint3_Entry.get(), Notes_Entry.get())]
    
    for element in PassData:
        c.execute("INSERT INTO Passwords VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", 
    element)
        

    # Commit Changes
    conn.commit()

    # Close Connection
    conn.close()

    add_pass.destroy()

root = Tk()

root.geometry('500x500')
root.title('Password Saver')
my_menu = Menu(root)
 

root.mainloop()

这里有几个选项可以实现此目的,最简单的方法是使用 lambda and pass a reference of your window, stored with the variable add_pass in the namespace of the function add_pass through the interface of your function add_butt. Passing an argument through a button command in tkinter 可以通过不同的方式实现,但我更喜欢 lambda。

更改如下所示:

def add_pass(): 
    ..
    Add_Button = Button( ..,command=lambda window=add_pass: add_butt(window))

def add_butt(window):
    window.destroy()
   ...

补充建议:

不要使用通配符导入

不要多次使用同一个变量名

See explanation 还要看看 PEP 8