如何使用kivymd中的函数更改列表项图标?

2024-09-28 23:51:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是kivymd的初学者。我试图在我的项目中创建一个功能。在这里,我需要更改OneLineIconListItem的图标及其文本。我可以很容易地修改文本。但仍然无法更改图标。下面是我的代码问题的一部分

from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.list import OneLineIconListItem,IconLeftWidget

KV = """
MDScreen:
    ScrollView:
        pos_hint : {"center_x": 0.5, 'center_y':0.3}
        MDList:
            OneLineIconListItem:
                id: control_panel
                text: 'Message'
                
                IconLeftWidget:
                    icon:'android-messages'
    MDRectangleFlatButton:
        text: "change"
        user_font_size: "30sp"
        pos_hint: {'center_x':0.5, 'center_y':0.5}
        on_release: 
            app.demoFunction()
"""

class DemoApp(MDApp):
    def build(self):
        self.screen = Builder.load_string(KV)
        return self.screen

    def demoFunction(self):
        self.root.ids.control_panel.text = 'Control panel'
        self.root.ids.control_panel.add_widget(IconLeftWidget(icon='account'))

if __name__ == "__main__":
    DemoApp().run()

当我按下按钮时,图标没有改变,而是添加了一个新图标。按下按钮时如何更改图标


Tags: textfrom文本importselfappbuildercontrol
1条回答
网友
1楼 · 发布于 2024-09-28 23:51:51

使用:

from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.list import OneLineIconListItem,IconLeftWidget

KV = """
MDScreen:
    ScrollView:
        pos_hint : {"center_x": 0.5, 'center_y':0.3}
        MDList:
            OneLineIconListItem:
                id: control_panel
                text: 'Message'
                
                IconLeftWidget:
                    id: jbsidis
                    icon:'android-messages'
    MDRectangleFlatButton:
        text: "change"
        user_font_size: "30sp"
        pos_hint: {'center_x':0.5, 'center_y':0.5}
        on_release: 
            app.demoFunction()
"""

class DemoAppjbsidis(MDApp):
    def build(self):
        self.screen = Builder.load_string(KV)
        return self.screen

    def demoFunction(self):
        if self.root.ids.jbsidis.icon=="android-messages":
            self.root.ids.jbsidis.icon="account"
            self.root.ids.control_panel.text="New text hereee, icon is account"
            return 0
        if self.root.ids.jbsidis.icon=="account":
            self.root.ids.jbsidis.icon="android-messages"
            self.root.ids.control_panel.text="New text hereee, icon is android-messages"
            return 0

if __name__ == "__main__":
    DemoAppjbsidis().run()

图片: enter image description here

enter image description here

enter image description here

相关问题 更多 >