Python 如何使用setOptionBox将OptionBox的值设置为另一个列表
我目前正在使用Python 如何使用setOptionBox将OptionBox的值设置为另一个列表,python,python-3.x,user-interface,drop-down-menu,tkinter,Python,Python 3.x,User Interface,Drop Down Menu,Tkinter,我目前正在使用appJar创建GUI: from appJar import gui listOne = ["first", "set", "of", "values"] listTwo = ["second", "set", "of", "values"] def reset(reset): app.setOptionBox("optionBoxTwo", listTwo) app=gui() app.addOptionBox("optionBoxOne", ["foo", "
appJar
创建GUI:
from appJar import gui
listOne = ["first", "set", "of", "values"]
listTwo = ["second", "set", "of", "values"]
def reset(reset):
app.setOptionBox("optionBoxTwo", listTwo)
app=gui()
app.addOptionBox("optionBoxOne", ["foo", "bar"])
app.setOptionBoxChangeFunction("optionBoxOne", reset)
app.addOptionBox("optionBoxTwo", listOne)
app.go()
我有选项boxOne
,这些内容在现阶段是不相关的。当更改此选项框的选择时,它将执行reset
功能。需要将optionBoxTwo
的值更改为listwo
。但是,这不起作用,返回时出现以下错误:
Warning - Invalid selection option: ['second', 'set', 'of', 'values']
这表明我只能更改当前显示的值,而不能更改要显示的值。例如,如果我将reset
功能更改为:
def reset(reset):
app.setOptionBox("optionBoxTwo", "values")
然后该函数将按预期执行。更改optionBoxOne
的值后,optionBoxTwo
的当前显示值将更改为“值”
我想更改要显示的值。我尝试在添加选项框时使用字典作为参数:
app.addOptionBox("optionBoxOne", {"listOne" : ["foo", "bar"], "listTwo" : ["something"]})
然后在函数中,我声明要显示的列表的键:
def reset(reset):
app.setOptionBox("optionBoxTwo", listTwo)
然而,这并不像预期的那样有效。相反,选项框中显示的值只是字典的键
如何以这种方式更改选项框中显示的值?我找到了一个解决方法,即删除选项框,然后用所需列表重新添加它:
def reset(reset):
app.removeOptionBox("optionBoxTwo")
app.addOptionBox("optionBoxTwo", listTwo)
虽然这似乎有点便宜和不和谐。但它确实取得了预期的结果 根据您的代码,for循环似乎可以解决您的问题。也许试试这样的
def reset(reset):
for val in listTwo:
app.setOptionBox("optionBoxTwo", val)
这将遍历列表中的所有值,并为每个值调用
app.setOptionBox
不幸的是,结果并不像预期的那样。这仅将listwo
的最后一个元素设置为optionBoxTwo
。请注意,当尝试将second
设置为optionBoxTwo
时,返回了一个错误,因为optionBoxTwo
中不存在second
。