【问题标题】:Can't close a window and keep other open无法关闭窗口并保持其他打开
【发布时间】:2022-01-25 15:33:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: python tkinter destroy


    【解决方案1】:

    你有几个选项来实现这一点,最简单的方法是使用lambda 并传递你的窗口的引用,与变量add_pass 一起存储在函数namespacenamespace 中通过你的函数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

    【讨论】:

    • 你太棒了!!!我已经为此苦苦挣扎了几天。它工作得很好。谢谢。
    • @Ken 欢迎您。还请查看我提供的链接。如果您了解上下文,您将取得更大的进步。我也推荐这个tkinter tutorial,因为我已经开始编程了。圣诞快乐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多