1

我对 Python 非常陌生,无法理解如何只捕获从列表框中选择的一个项目,更不用说一个以上了。我特别不明白程序何时记录了我选择的项目,因为没有带有列表框的“命令”选项。我认为是这样的。我真的不明白绑定。我认为这是我的问题(除其他外!)。

以下代码是从我的“app”类中提取的。

    l = Listbox(self, height=10, selectmode=EXTENDED)
    # Selectmode can be SINGLE, BROWSE, MULTIPLE or EXTENDED. Default BROWSE
    l.grid(column=0, row=11, sticky=(N,W,E,S))

    s = Scrollbar(self, orient=VERTICAL, command=l.yview)
    s.grid(column=0, row=11, sticky=(N,S,E))
    l['yscrollcommand'] = s.set

    for i in range(1,101):
        l.insert('end', 'Line %d of 100' % i)

    self.ichoose = l.curselection()

正如各位专家所意识到的,当我打印 app.ichoose 时,我只会得到一个空元组。我需要做什么?谢谢,约翰·罗兰

4

2 回答 2

0

好吧......我过去这样做的方式是:

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

那么函数entered看起来像这样:

def entered(event):
    global listEx
    items = map(int, listbox.curselection())
    result= listEx[items[0]]
    print result

listEx是列表框中所有条目的列表,该items = map(int, listbox.curselection())部分将返回所选条目的索引值...如果您想获取多个值,我想for循环遍历中的值会非常简单items

编辑:

def entered(event):
    print listbox.selection_get()

只会打印出列表框中的选择,我喜欢使用双击鼠标的原因是因为它更有可能是真实世界的使用,通常我使用双击并<Return>作为标准列表框控件,尤其是在使用中有多种选择

于 2012-12-11T10:23:32.570 回答
0

通常,当用户单击该项目时会选择该项目,并且会触发默认绑定。如果您想在发生这种情况后尽快将其打印出来(或执行其他任何操作),请在 event 上创建绑定<<ListboxSelect>>。此事件将在选择更改后立即生成,即使它是通过键盘更改的。

于 2012-12-11T12:03:17.717 回答