1
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)

现在首先要注意,这不是所有代码,所以不要问 yml 是什么,它们正常工作。(它们是列表中的一堆元组)我添加了这些部分,因为为了让列表框成功打印“加载”,我需要执行两次“find_pos”。我第一次收到以下错误:

Exception in Tkinter callback
Traceback (most recent call last):
... (location) ...
pos = int(selection.curselection()[0])
IndexError: tuple index out of range

据我了解,第一次执行时:

loaded = ()

但之后它会返回正确的值。为什么会这样?请帮助并感谢:D

4

1 回答 1

1

当前选择由类绑定设置。类绑定在特定于小部件的绑定之后触发。因此,您的绑定第一次触发时没有选择。第二次触发时,它将显示之前选择的任何内容。

<<ListboxSelect>>如果您想在选择更改时执行某些操作,则应该绑定。绑定这意味着无论用户单击它还是使用键盘绑定,您的代码都将起作用。

于 2013-04-09T22:27:38.550 回答