如何让函数读取另一个函数

How to have function read another function

我需要一个 done 变量来在完成时关闭 window。菜单也是一个功能。我试过 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()

您似乎只是向我们展示了整个代码的一部分,因此这个答案可能有限,但是您应该很容易将其集成到您的代码中。

我们可以在创建 tkinter window 时放入我们需要的一切,包括完成按钮。

我想你想要这样的东西:

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