2013-04-09 45 views
1
import Tkinter 
def selector(): 
    ... 
    selections_scroller = Tkinter.Scale(b_action, from_=0, to=len(ymls)) 
    ... 
    pos = int(selection.curselection()[0]) 
    loaded = ymls[pos] 
    stuff_loaded = True 
    p_cost.set(loaded[4]) 
    print loaded 
    ... 
def find_pos(event): 
    selector() 
selection.bind("<Button-1>", find_pos) 

現在首先要注意的是,這不是所有的代碼,所以不要問是什麼ymls,他們正常工作。 (他們是一堆列表裏面的元組)我添加了這些部分,因爲爲了讓列表框成功打印「加載」,我需要執行兩次「find_pos」。我第一次收到以下錯誤:Tkinter:Listbox請表現你自己

Exception in Tkinter callback 
Traceback (most recent call last): 
... (location) ... 
pos = int(selection.curselection()[0]) 
IndexError: tuple index out of range 

據我瞭解,當第一次執行:

loaded =() 

但事後返回正確的值。爲什麼這樣?請幫助並感謝:D

回答

1

當前選擇由類綁定設置。該類綁定在特定於窗口小部件的綁定之後觸發。所以,你的綁定第一次觸發沒有選擇。第二次啓動它將顯示之前選擇的內容。

如果您想在選擇更改時執行某些操作,您應該綁定<<ListboxSelect>>。綁定就意味着無論用戶點擊它還是使用鍵盤綁定,您的代碼都能正常工作。

+0

嘿,再次感謝:D – madprogramer 2013-04-10 03:40:16

+0

@Bryan我發現你的答案有用。我從'<"Button-1">'更改爲''ListboxSelect >>'並注意到我的程序變得呆滯。那響鈴嗎?任何可能導致的事情?謝謝。 – sedeh 2014-08-19 18:09:52

+0

@sedeh:不,我從來沒有像你所描述的那樣經歷一個放緩。 – 2014-08-19 18:21:14