如何使用 kivymd 中的函数更改列表项图标?
Posted
技术标签:
【中文标题】如何使用 kivymd 中的函数更改列表项图标?【英文标题】:How to change List item icon using a function in kivymd? 【发布时间】:2021-11-17 10:10:52 【问题描述】:我是 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()
当我按下按钮时,图标没有改变,它正在添加一个新图标。如何更改按下按钮时的图标?
【问题讨论】:
【参考方案1】:用途:
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()
图片:
【讨论】:
你太酷了,非常感谢。以上是关于如何使用 kivymd 中的函数更改列表项图标?的主要内容,如果未能解决你的问题,请参考以下文章
Kivymd:如何在不创建自定义类的情况下在列表项中添加复选框?
如何在 KivyMD 中更改 FloatingActionButton 的大小?
Android如何在每个listview列表项上添加图标并更改文本颜色、背景颜色
相当于 Kivy/KivyMD 中的 `wx.CallLater()` 或者如何处理 `time.sleep()` 冻结 GUI?