0
我想正確設置Tkinter列表框值,它不工作。列表框默認值
self.carrier = Listbox(self)
self.carrier.grid(row=0, column=0)
self.carrier.insert(0, "Verizon")
self.carrier.insert(1, "AT&T")
self.carrier.insert(2, "T-Mobile")
self.carrier.insert(3, "Sprint")
self.carrier.selection_set(self.carrier_num_map(data['carrier']))
def carrier_num_map(self, carrier):
carrier_handles = {
"AT&T": 1,
"T-Mobile": 2,
"Verizon": 0,
"Sprint": 3
}
handle = carrier_handles.get(carrier, None)
return handle
現在傳入的值(在data ['carrier']中)是正確的 - 我已經驗證過。
但由於某種原因,它默認爲列表中的第一個值(索引0 - Verizon),除非我明確地單擊一個值。
這是爲什麼?這個代碼不應該選擇我想要激活的值嗎?它看起來是在小部件中選擇的,但是當我嘗試基於它運行代碼時,它使用列表中的第一個代碼。
編輯:添加列表框。使用此當前設置,程序啓動時會突出顯示正確的值。
下面就一起來看看JSON文件,我從拉數據變量:
{"username": "[email protected]", "password": "mypass", "phone_num": "555-555-1212", "carrier": "Sprint"}
採用這種設置,Sprint將在程序啓動列表框突出,但是,如果我馬上按下一個按鈕這應該得到載體價值:
carrier = self.carrier.get(ACTIVE)
它得到VERIZON,而不是,例如,Sprint。
我很困惑。該代碼沒有列表,也沒有任何Tkinter代碼。你確定你粘貼了正確的文字嗎?請提供[mcve]。 – Kevin
selection_set()是Tkinter中的一個方法,self.carrier是一個Tkinter Listbox對象(雖然不是很清楚)。我會盡快補充其餘部分,以便我的問題更清楚。 –