如何使用setOptionBox设置具有另一个列表的OptionBox的值

2024-09-30 18:19:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前正在使用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()

我有optionBoxOne,这些内容在这个阶段是不相关的。更改此选项框的选择后,它将执行reset函数。应为将optionBoxTwo的值更改为listTwo。但是,这不起作用,返回时返回以下错误:

^{pr2}$

这表明我只能更改当前显示的值,而不能更改要显示的值。例如,如果我将reset函数改为:

^{3}$

然后函数将按预期执行。更改optionBoxOne的值时,optionBoxTwo的当前显示值将更改为"values"。在

我想更改要显示的值。在添加选项框时,我尝试使用字典作为参数:

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)

虽然这看起来有点便宜和不和谐。但它确实达到了预期的结果。在


Tags: of函数appdef选项guiresetvalues
1条回答
网友
1楼 · 发布于 2024-09-30 18:19:30

根据您的代码,for循环似乎可以解决您的问题。也许可以试试这样的方法。在

def reset(reset):
    for val in listTwo:
        app.setOptionBox("optionBoxTwo", val)

这应该遍历列表中的所有值,并为每个值调用app.setOptionBox。在

相关问题 更多 >