【问题标题】:Cannot change text of kivy/kivymd label无法更改 kivy/kivymd 标签的文本
【发布时间】:2021-12-31 20:00:47
【问题描述】:

当我尝试在 kivy/kivymd 中更改标签的文本时,出现以下错误:

AttributeError: 'TheApp' object has no attribute 'ids'

这是 main.py 的一部分,用于一个最小的可重现示例:

class TheApp(MDApp):
    btstate = 0

    def voice_session_connec(self):
        
        if self.btstate == 0:
            self.ids.Main_button.text = "Stop"
            btstate = 1
            th = threading.Thread(target=voice_session)
            self.th.start()
        else:
            self.ids.Main_button.text = "Start"
            btstate = 0
            self.th.join()
        

.KV 字符串:

MDFloatLayout:

    MDRoundFlatButton:
        id: Main_button
        text: "Start"
        text_color: 0, 1, 0, 1
        pos_hint: {"center_x": .5, "center_y": .5}
        on_release: app.voice_session_connec()

希望你能解决这个问题,但我不擅长 kivy。

【问题讨论】:

  • 您是否定义了root 小部件。尝试将self.ids 更改为self.root.idsThread 'th' 也可能有问题,不应该是self.th
  • 感谢它的工作。提交您的答案,如果您愿意,我会将其标记为正确。
  • 成功了,仅此而已。乐于助人。
  • 一些建议: 1. 有时您似乎没有对您的类TheApp 的某些属性、方法提供任何引用,它们来自哪里。这不遵循OOP 结构,可能会导致一些问题。只要在课堂上应用self.something 而不是something,就尝试它。 2.kivy中有一些现成的好用的属性,试试看。例如,将btstate 设置为NumericProperty(0) 而不仅仅是0。您可以在kivy 文档中找到更多信息。

标签: python kivy kivy-language kivymd


【解决方案1】:

您需要提及root。将self.ids.Main_button.text 更改为self.root.ids.Main_button.text 即可使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2022-01-22
    相关资源
    最近更新 更多