如何制作2个旋转盒,每个旋转盒有不同的信息,同时滚动?

时间:2016-12-29 23:38:23

标签: python-3.x tkinter

我是python和tkinter的新手,想知道如何将两个旋转框连接在一起,这样当我滚动浏览一个时,另一个会自动滚动它。

我成功地完成了这项工作:

onCreate

但是这会在两个旋转框中显示相同的信息。

如何滚动spinbox1使spinbox2同时滚动,同时显示不同的信息?

1 个答案:

答案 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)