我是python和tkinter的新手,想知道如何将两个旋转框连接在一起,这样当我滚动浏览一个时,另一个会自动滚动它。
我成功地完成了这项工作:
onCreate
但是这会在两个旋转框中显示相同的信息。
如何滚动spinbox1使spinbox2同时滚动,同时显示不同的信息?
答案 0 :(得分:1)
您可以使用Spinbox
将功能分配给command=
es。
函数可以在一个Spinbox
中获取选定的值,在所有值的列表中找到它的索引,从具有相同索引的第二个列表值获取并在第二个Spinbox
中使用。
import tkinter as tk
def sb1_changed(): # first spinbox
selected = sb1_var.get()
idx = vals1.index(selected)
print('selected:', selected)
print('index:', idx)
sb2_var.set(vals2[idx])
def sb2_changed(): # second spinbox
selected = sb2_var.get()
idx = vals2.index(selected)
print('selected:', selected)
print('index:', idx)
sb1_var.set(vals1[idx])
# --- main ---
vals1 = ['A', 'B', 'C']
vals2 = ['1', '2', '3']
root = tk.Tk()
sb1_var = tk.StringVar()
sb2_var = tk.StringVar()
sb1 = tk.Spinbox(root, textvariable=sb1_var, values=vals1, command=sb1_changed)
sb1.pack()
sb2 = tk.Spinbox(root, textvariable=sb2_var, values=vals2, command=sb2_changed)
sb2.pack()
root.mainloop()
也许使用参数,您只能使用一个函数并执行changed(sb1, sb2)
和changed(sb2, sb1)