对于我正在开发的Python/Tkinter应用程序,我有两个OptionMenus。我想要创建一个“交换”按钮,以交换两者的选择。两个OptionMenus都由相同的列表填充。
让我们简单地说,对于这个例子,列表是国家的,第一个OptionMenu选择了“德国”,而第二个OptionMenu选择了“荷兰”。该函数应使第一个OptionMenu将其选择改为“荷兰”,第二个改为“德国”。
相关代码片段:
unit1 = StringVar()
unit2 = StringVar()
unit1_entry = ttk.Entry(mainframe, width=7, textvariable=unit1)
unit1_entry.grid(column=1, row=1, sticky=(W, E))
unit2_label = ttk.Label(mainframe, textvariable=unit2)
unit2_label.grid(column=1, row=2, sticky=(W, E))
ttk.Button(mainframe, text="Swap" #command needed here#).grid(column=4, row=2, sticky=W)
#FIRST MEASUREMENT
convertFromUnits.set(LENGTH[0])
convertFrom = OptionMenu(mainframe, convertFromUnits, *LENGTH)
convertFrom.grid(column=2, row=1)
convertFrom.config(width=16, justify="center")
#SECOND MEASUREMENT
convertToUnits.set(LENGTH[1])
convertTo = OptionMenu(mainframe, convertToUnits, *LENGTH)
convertTo.grid(column=2, row=2)
convertTo.config(width=16, justify="center")所以,我需要创建一个函数来交换在两个OptionMenus "convertFrom“和"convertTo”中设置的内容。试过几件事但没什么效果。任何帮助都将不胜感激。
谢谢,贾罗德
发布于 2015-07-02 11:26:17
我认为最好的选择是创建一个auxiliar函数来进行交换,一个基本的例子是
from Tkinter import *
def swap():
temp=variable1.get()
variable1.set(variable2.get())
variable2.set(temp)
master = Tk()
variable1 = StringVar(master)
variable1.set("one") # default value
variable2 = StringVar(master)
variable2.set("one") # default value
w = OptionMenu(master, variable1, "one", "two", "three")
w.pack()
w2 = OptionMenu(master, variable2, "one", "two", "three")
w2.pack()
but = Button(master, text="Swap", command=swap)
but.pack()
mainloop()只是要小心您的变量可以从您的函数中访问。
https://stackoverflow.com/questions/31182854
复制相似问题