2012-06-20 101 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.讚賞它。 –