2

我正在创建一个配置器,允许用户从一组合法值中进行选择。对于每个合法值,我创建一个选项(本质上是一个菜单按钮)。如果用户选择一个选项,则该选项会将值更改为其标题。

请注意,具有当前值的选项具有与其他选项不同的属性。我想在选择后循环选择并更改属性以匹配新值。

我可以通过将legal_choices列表传递给所有选项来循环选择(或者做一些更聪明的事情),但我不知道如何编写循环遍历小部件列表并更改其属性的代码。

            for vv in leg_values:
                choice = Choice(vv, self, item)
                if vv == self.get_var(item):
                    choice = urwid.AttrMap(choice,'cur_value')
                legal_choices.append(choice)
            var_item = SubMenu(top,item,legal_choices)

有谁知道如何更改 urwid 中小部件的属性?

4

1 回答 1

1

我在按钮上遇到了同样的问题,但 3 年后我仍然找不到答案。实验后这对我有用:

button = urwid.Button("some label")
urwid.connect_signal(button, 'click', self.item_chosen, task)
# Assigning original AttrMap 
button = urwid.AttrMap(button, None, focus_map='reversed')

# At a later point you can change the AttrMap used like this and the button color will change:
button.attr_map = {None: "active task"}
于 2020-12-18T23:36:02.653 回答