选项菜单 tkinter 中不能 select 选项
Can't select option in optionmenu 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
两次。如果您需要第二个 window,则需要使用 Toplevel
的实例。如果您需要程序等待第二个 window 被销毁,您可以使用 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 网站上的 Dialog Windows。
简而言之,每当我尝试使用:
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
两次。如果您需要第二个 window,则需要使用 Toplevel
的实例。如果您需要程序等待第二个 window 被销毁,您可以使用 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 网站上的 Dialog Windows。