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

Python 如何让函数读取另一个函数,python,python-3.x,drop-down-menu,tkinter,tk,Python,Python 3.x,Drop Down Menu,Tkinter,Tk,我需要一个done变量来关闭窗口。菜单也是一项功能。我尝试过root1.destory,但由于done函数无法看到root1是什么,因为它在函数中表示root1未定义。如何让done函数理解root1是什么并关闭它。这两种功能在其他地方都需要。我使用函数,因为我不希望它们直接启动,并且只在需要时才启动。我的代码是: def edit_menu(): root1 = Tk() root1.title("Edit Menu") menu = Frame(root1)

我需要一个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()

看起来您只是向我们展示了整个代码的一部分,所以这个答案可能有限,但是您应该很容易将其集成到您的代码中

我们可以在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()

欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。您发布的代码不足以显示方法或引发错误。第一个问题是您在mainloop之后有一个函数。无论如何,没有任何东西调用该函数。这里没有足够的信息来说明您希望它如何工作。通常,可以将
done
作为类方法,或者将
root1
传递给
done
作为参数。因为没有类,也没有主程序,所以很难看到您想要什么。这可能是一种比我尝试的更好的实现方法。谢谢