【问题标题】:Python Tkinter Listbox Unbind the Default SelectionPython Tkinter 列表框取消绑定默认选择
【发布时间】:2012-06-22 03:37:00
【问题描述】:

我发现自动选择列表框中项目索引 0 的这种功能很麻烦。在我的脚本中,我有 3 个名为 lb1、lb2 和 lb3 的列表框。如果用户选择了 lb2 或 lb3 上的任何项目,我打算弹出一个 MessageBox 要求用户仅从 lb1 中选择项目。但是,由于 lb2 和 lb3 中的自动选择项目索引 0,每当我单击 lb1 中的项目时,也会出现 MessageBox。

问题: 如何禁用 ListBox 中项目索引 0 的初始选择?

如果用户从 lb2 或 lb3 中选择项目,这是我调用 MessageBox 的脚本的一部分:

if lb2.get(ACTIVE) or lb3.get(ACTIVE):
    tkMessageBox.showwarning("Warning","Please select from lb1 ")

请指教!执行预期操作的任何其他方式也可以。谢谢。

【问题讨论】:

  • 感谢编辑。很少见。我需要为这个问题添加其他标签吗?

标签: python listbox widget tkinter


【解决方案1】:

您使用的是什么操作系统?

如果我在 Windows 上执行此代码(取自 effbot.org 上的 Tkinter 列表框参考页面),则列表框中没有默认选择。

from Tkinter import *
master=Tk()
listbox=Listbox(master)
listbox.pack()
for item in ['one','two','three','four']:
    listbox.insert(END, item)

编辑:好的,现在我明白你在问什么了。您想在尝试使用get(ACTIVE) 之前先检查curselection 方法。

if listbox.curselection():
    item = listbox.get(ACTIVE)

这有帮助吗?你可以找到more complete example here

【讨论】:

  • 您好,我使用的是 Windows XP Python 2.3。好的,我从默认选择中的意思是,当我尝试检索列表框中的选定项目时,即使我尚未选择/突出显示列表框中的项目,它也会自动检索第 0 个项目。我希望删除列表中默认选择的第 0 项。
  • Brandon,尝试使用get函数来获取item,你会发现虽然物理上我们没有看到默认高亮的item,但实际上,第0个item会被默认获取。
  • 啊哈,为什么我没有想到只检查 curlselection !如果用户没有选择任何项目,则 curlselection 返回空元组。我不应该在 if 语句中使用 get(ACTIVE)。谢谢你的帮助布兰登。感谢它。
猜你喜欢
  • 2017-10-07
  • 1970-01-01
  • 2014-09-16
  • 2013-01-06
  • 2011-10-02
  • 2020-12-09
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多