【问题标题】:How do I read what's been selected in a MULTIPLE listbox如何阅读在 MULTIPLE 列表框中选择的内容
【发布时间】:2012-11-28 11:40:18
【问题描述】:

我对 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 时,我只会得到一个空元组。 我需要做什么? 谢谢, 约翰·罗兰

【问题讨论】:

  • 你必须告诉我们什么是滚动条和列表框。你用的是什么库?
  • 我使用的是 Python 2.6.6 和 Tk 8.5 滚动条和列表框是 Tk 库中的小部件(当然我已经导入了)。
  • 这并不明显,因为几乎每个 gui 包中都有 ListBox 和 Scrollbar...
  • @JoranBeasley:如果你对Tkinter很熟悉,很明显代码就是Tkinter代码。

标签: python listbox tkinter


【解决方案1】:

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

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()) 部分会返回所选条目的索引值...如果要获取多个值,我想会很简单循环遍历items中的值

编辑:

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

只会打印出列表框中的选择,我喜欢使用双击鼠标的原因是因为它更有可能在现实世界中使用,通常我使用双击和&lt;Return&gt;作为标准列表框控件,尤其是在使用多个选项时

【讨论】:

  • 您不需要在列表框中保留自己的数据副本,因为列表框可以为您提供这些信息。
  • 你说得对,对不起,我只是在浏览我的旧脚本,这是我看到的第一个脚本,它使用这种样式的原因是然后使用相同的索引从对应的列表。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多