Python 保存选项菜单输入-tkinter
我改编了一个来自互联网的简单示例,创建了一个简单的下拉菜单。我正在尝试删除用户的输入,以便在用户关闭输入框后可以使用它。我的最新尝试如下所示:Python 保存选项菜单输入-tkinter,python,tkinter,Python,Tkinter,我改编了一个来自互联网的简单示例,创建了一个简单的下拉菜单。我正在尝试删除用户的输入,以便在用户关闭输入框后可以使用它。我的最新尝试如下所示: from tkinter import * root = Tk() root.title("Tk dropdown example") # Add a grid mainframe = Frame(root) mainframe.grid(column=0,row=0, sticky=(N,W,E,S) ) mainframe.columnconfi
from tkinter import *
root = Tk()
root.title("Tk dropdown example")
# Add a grid
mainframe = Frame(root)
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)
# Create a Tkinter variable
tkvar1 = StringVar(root)
tkvar2 = StringVar(root)
choices_wl = [2,3,4]
popupMenu = OptionMenu(mainframe, tkvar1, *choices_wl)
Label(mainframe, text="Select a number").grid(row = 1, column = 1)
popupMenu.grid(row = 2, column =1)
choices_rw = [5,10,15,20]
popupMenu = OptionMenu(mainframe, tkvar2, *choices_rw)
Label(mainframe, text="Select a width").grid(row = 1, column = 2)
popupMenu.grid(row = 2, column =2)
quit_button = Button(mainframe, text="OK", command=root.destroy).grid(row = 5, column = 2)
# on change dropdown value
def change_dropdown1(*args):
number=tkvar1.get()
tkvar1.set(number)
return number
def change_dropdown2(*args):
print( tkvar2.get() )
# link function to change dropdown
tkvar1.trace('w', change_dropdown1)
number = change_dropdown1()
tkvar2.trace('w', change_dropdown2)
root.mainloop()
print("number=%s" % number)
这不起作用,打印出来的只是“数字”
任何建议都将不胜感激我认为你把事情弄得太复杂了。您的tkvar变量都是独立跟踪的,因此您只需要在主循环结束后打印每个tkvar的值 删除了2个函数,只使用了TKVAR
from tkinter import *
root = Tk()
root.title("Tk dropdown example")
mainframe = Frame(root)
mainframe.grid(column=0, row=0, sticky=(N,W,E,S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
mainframe.pack(pady=100, padx=100)
tkvar1 = StringVar(root)
tkvar2 = StringVar(root)
choices_wl = [2, 3, 4]
choices_rw = [5, 10, 15, 20]
popupMenu = OptionMenu(mainframe, tkvar1, *choices_wl)
Label(mainframe, text="Select a number").grid(row=1, column=1)
popupMenu.grid(row=2, column=1)
popupMenu = OptionMenu(mainframe, tkvar2, *choices_rw)
Label(mainframe, text="Select a width").grid(row=1, column=2)
popupMenu.grid(row=2, column=2)
quit_button = Button(mainframe, text="OK", command=root.destroy).grid(row=5, column=2)
root.mainloop()
# this line works fine on my end.
print("numbers = {}, {}".format(tkvar1.get(), tkvar2.get()))
虽然我觉得这个print语句不应该起作用,因为我们破坏了tkinter实例,我认为它也应该破坏tkvar,但我想不会。也许有人能帮我解释一下。在
change\u下拉列表1
中,number
是一个局部变量。函数之外的任何东西都看不到它。是的,这就是为什么我添加了“returnnumber”,你不能从绑定函数返回值。运行函数的代码大多忽略返回值。谢谢。但我该如何保存它呢?简单的“number=tkvar1.get()”不会work@zeb92你所说的节约到底是什么意思?你想把它放在一个文件中,还是仅仅是一个可以在Tkinter程序之外调用的变量?没关系,当它在“root.mainloop()”之后时,它就起作用了——这肯定是把它复杂化了。干杯