无法关闭 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
我正在尝试打开第二个 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