import Tkinter
def selector():
...
selections_scroller = Tkinter.Scale(b_action, from_=0, to=len(ymls))
...
pos = int(selection.curselection()[0])
loaded = ymls[pos]
stuff_loaded = True
p_cost.set(loaded[4])
print loaded
...
def find_pos(event):
selector()
selection.bind("<Button-1>", find_pos)
现在首先要注意的是,这不是所有代码所以不要问ymls是什么,它们正常工作。 (它们是列表中的一堆元组)我添加了这些部分,因为为了使列表框能够打印&#34;已加载&#34;我成功地需要执行&#34; find_pos&#34;两次。我第一次收到以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
... (location) ...
pos = int(selection.curselection()[0])
IndexError: tuple index out of range
据我所知,第一次执行时:
loaded = ()
但之后它会返回正确的值。为什么会这样?请帮助和谢谢:D
答案 0 :(得分:1)
当前选择由类绑定设置。 特定于窗口小部件的绑定后,类绑定将触发。所以,你的绑定第一次触发时没有选择。它第二次触发它将显示之前选择的任何内容。
如果您想在选择更改时执行某些操作,则应绑定<<ListboxSelect>>
。绑定意味着无论用户点击它还是使用键盘绑定,您的代码都将起作用。