无法在选项中选择选项菜单 tkinter



简而言之,每当我尝试使用时:

import tkinter
def donothing():
    print("Doing nothing")
    window = tkinter.Tk()
    list = ["x", "y", "z"]
    var = tkinter.StringVar()
    var.set("This one doesn't.")
    option = tkinter.OptionMenu(window, var, *list)
    option.grid(row=1, column=1)
    window.mainloop()
main = tkinter.Tk()
var2 = tkinter.StringVar()
var2.set("This one works.")
list2 = ["x","y","z"]
button = tkinter.Button(text="test", command=donothing)
menu = tkinter.OptionMenu(main, var2, *list2)
button.grid(row=1, column=1)
menu.grid(row=2, column=1)
main.mainloop()

我的问题是,为什么这不起作用?另外,我该如何做这项工作?

您可以看到,功能外部的一个工作正常,但是里面的一个却没有。我有计划使用类似的内容是一个更大的软件,因此将不胜感激!

您不能有两个 Tk实例,也不应两次致电mainloop。如果您需要第二个窗口,则需要使用Toplevel的实例。如果您需要程序等待第二个窗口被销毁,则可以使用Wait_window方法。

例如:

import tkinter
def donothing():
    print("Doing nothing")
    window = tkinter.Toplevel()
    list = ["x", "y", "z"]
    var = tkinter.StringVar()
    var.set("This one doesn't.")
    option = tkinter.OptionMenu(window, var, *list)
    option.grid(row=1, column=1)
    print("waiting for the window to go away...")
    main.wait_window(window)
    print("done!")
main = tkinter.Tk()
var2 = tkinter.StringVar()
var2.set("This one works.")
list2 = ["x","y","z"]
button = tkinter.Button(text="test", command=donothing)
menu = tkinter.OptionMenu(main, var2, *list2)
button.grid(row=1, column=1)
menu.grid(row=2, column=1)
main.mainloop()

有关创建临时对话框的更多信息,请参见Effbot网站上的对话框Windows。

最新更新