2012-06-20 41 views
1

我发现这个功能的自动选择项目索引0列表框中的滋扰。在我的脚本中,我有3个名为lb1,lb2和lb3的列表框。如果用户选择lb2或lb3上的任何项目,我打算弹出一个MessageBox来要求用户只从lb1中选择项目。但是,由于lb2和lb3中的自动选择项目索引为0,所以无论何时单击lb1中的项目,MessageBox也会出现。Python的Tkinter列表框取消绑定默认选择

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

这是我的脚本调用的MessageBox如果用户从LB2或LB3选择项目的一部分:

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

请指点!执行预期行动的任何其他方式也可以。谢谢。

+0

Thx用于编辑。非常小的看法。我需要为这个问题添加其他标签吗? –

回答

1

你在使用什么操作系统?

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

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

编辑: OK,现在我看到你在问什么。在尝试使用get(ACTIVE)之前,您首先需要检查curselection方法。

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

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

+0

嗨,我正在使用Windows XP Python 2.3。好的我默认选择的意思是,当我尝试在列表框中检索选定的项目时,即使我还没有选择/突出显示列表框中的项目,它也会自动检索第0个项目。我希望删除列表中默认选择的第0个项目。 –

+0

布兰登,尝试使用get函数来获取项目,你会看到虽然物理上我们没有看到任何突出显示的项目,实际上,第0项目将被默认获得。 –

+0

啊哈,为什么我没有想到只是检查curlselection!如果用户没有选择任何项目,curlselection返回空元组。我不应该在if语句中使用get(ACTIVE)。 Thx为您提供帮助Brandon.赞赏它。 –