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

时间:2017-08-14 21:25:47

标签: 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)
    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()

1 个答案:

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