urwid 改变显示属性
urwid changing a display attribute
我正在创建一个允许用户从一组合法值中进行选择的配置器。我为每个合法值创建一个 Choice(本质上是一个 MenuButton)。如果用户选择一个 Choice,则该选项会将值更改为其标题。
请注意,具有当前值的 Choice 具有与其他选项不同的属性。我想在做出选择后循环选择并更改属性以匹配新值。
我可以通过将 legal_choices
列表传递给所有 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 中更改小部件的属性?
我在按钮方面遇到了同样的问题,但 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"}
我正在创建一个允许用户从一组合法值中进行选择的配置器。我为每个合法值创建一个 Choice(本质上是一个 MenuButton)。如果用户选择一个 Choice,则该选项会将值更改为其标题。
请注意,具有当前值的 Choice 具有与其他选项不同的属性。我想在做出选择后循环选择并更改属性以匹配新值。
我可以通过将 legal_choices
列表传递给所有 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 中更改小部件的属性?
我在按钮方面遇到了同样的问题,但 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"}