我正在创建一个配置程序,允许用户从一组合法值中进行选择。对于每个合法值,我创建一个Choice(基本上是一个MenuButton)。如果用户选择了Choice,则选择会将值更改为其标题。
请注意,具有当前值的Choice具有与其他值不同的属性。我想在选择后循环选择并更改属性以匹配新值。
我可以通过将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中更改窗口小部件的属性?
答案 0 :(得分: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"}