我试图编写一个程序,如果我按下一个按钮,标签小部件文本的一部分颜色会改变。在
例如,有一个标签小部件,文本为“1/0”。现在,如果我按下按钮,1的颜色会变为指定的颜色。这是我尝试过的程序:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.utils import get_color_from_hex
Builder.load_string('''
#: import get_color_from_hex kivy.utils.get_color_from_hex
<b>:
orientation: 'horizontal'
Button:
text: 'Press Me'
on_press: num.text[0].color = get_color_from_hex('#04d3ff')
Label:
id: num
text: '1/0'
''')
class b(BoxLayout):
pass
class main(App):
def build(self):
return b()
if __name__ == "__main__":
main().run()
我得到的错误是:
^{pr2}$编辑:解决方案
这个编辑是为那些碰巧遇到类似情况,并从谷歌搜索到这里的人。恶劣的解决方案非常有效。这是kv语言的解决方案代码:
<b>:
orientation: 'horizontal'
Button:
text: 'Press Me'
on_press: num.text = "[color=#04d3ff]1[/color]/0"
on_release: num.text = "[color=#ffffff]1[/color]/0"
Label:
id: num
markup: True
text: '1/0'
对于你评论中的第二个问题,你问“我现在遇到了另一个问题。:\如果有多个标签怎么办?如果要同时更改多个标签的第一个字符,该怎么办?”你应该提出一个新问题,并提供一些代码。在
但是,乍一看,您似乎可以简单地遍历标签并执行以下操作:
获取标签的当前文本(标签.text)
通过对第一个字符使用标记更新标签颜色。例如,如果标签.text=“my_text”,我可以通过在标签内更新以下内容来突出显示标签文本的“m”:
这个答案假设您有一组现有的标签,并且您希望修改每个标签的第一个字符。没有代码,很难给出一个更具体的答案,但这种通用的方法是可行的。在
使用Kivy的basic markup syntax设置颜色,同时在标签中使用
markup: True
。在相关问题 更多 >
编程相关推荐