完成后我需要一个done变量来关闭窗口。菜单也是一个功能。我已经尝试过root1.destory但是由于done函数无法看到root1是什么,因为它在函数内部,它表示root1未定义。我如何使用done函数了解root1是什么并关闭它。这两个函数都在其他地方调用。我正在使用函数,因为我不希望它们立即启动,只是在被调用时。我的代码是:
def edit_menu():
root1 = Tk()
root1.title("Edit Menu")
menu = Frame(root1)
menu.pack(pady = 5, padx = 50)
var = StringVar(root1)
options = [
"Forename",
"Surname",
"Email",
"Date of birth",
"Home address",
"Home phone number",
"Gender",
"Tutor group",
]
option = OptionMenu(menu, var, options[0], *options, command=edit_functions)
var.set('Select')
option.grid(row = 1, column = 1)
root1.mainloop()
return edit_menu
def done():
print()
done = (input("If you have finnished editing, type done: "))
if done == "done":
root1.destroy()
答案 0 :(得分:1)
您似乎只是向我们展示了整个代码的一部分,因此这个答案可能会受到限制,但您应该很容易将其整合到代码中。
我们可以在创建tkinter窗口时放入所需的一切,包括完成按钮。
我认为你希望得到类似的东西:
from tkinter import *
def edit_menu():
root1 = Tk()
root1.title("Edit Menu")
menu = Frame(root1)
menu.pack(pady = 5, padx = 50)
var = StringVar(root1)
options = [
"Forename",
"Surname",
"Email",
"Date of birth",
"Home address",
"Home phone number",
"Gender",
"Tutor group",
]
option = OptionMenu(menu, var, options[0], *options)
var.set('Select')
option.grid(row = 1, column = 1)
done_btn = Button(root1, text = "Done", command = lambda: root1.destroy())
done_btn.pack()
root1.mainloop()
edit_menu()