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对象(虽然不是很清楚)。我会尽快补充其余部分,以便我的问题更清楚。 –