返回在tkinter列表框中单击的项目的索引

时间:2015-06-23 20:10:57

标签: python tkinter listbox selection

我正在尝试让tkinter返回在列表框中单击的项目的索引。这是我的代码。

def fileSelection(self):
    selection = listbox.curselection
    print(selection)

listbox.bind("<Button-1>", fileSelection)

现在打印

  

在0x00320E30处的tkinter.Listbox对象的绑定方法Listbox.curselection

无论点击什么项目。如果我更改代码以包含这样的按钮:

button = Button(text=u"test", command=OnButtonClick)

def OnButtonClick():
    selection = listbox.curselection()
    print(selection)

并选择列表框项目,然后单击按钮,它将按预期打印所选项目的索引,但这是我不想要的额外步骤。

2 个答案:

答案 0 :(得分:6)

def fileSelection(self):
    selection = listbox.curselection
    print(selection)

看起来你忘记了括号。

def fileSelection(self):
    selection = listbox.curselection()
    print(selection)

答案 1 :(得分:-1)

根据effbot.org,轮询窗口小部件可让您进行点击更新。

self.current = None
self.listbox = Listbox(self)
self.listbox.pack()
self.poll()

def poll(self):
    now = self.listbox.curselection()
    if now != self.current:
        self.list_has_changed(now)
        self.current = now
    self.after(250, self.poll)

def list_has_changed(self, selection):
    print "selection is", selection