为何KivyMD 1.2.0中Snackbar(text="Message")无text属性?
解决KivyMD 1.2.0中Snackbar的文本与按钮显示问题
KivyMD 1.2.0版本的Snackbar和较新版本API差异较大,官方文档可能更新不及时导致混淆,以下是适配该版本的正确实现方式:
1. 设置Snackbar主文本
该版本没有text属性,需要手动添加MDLabel作为Snackbar的子组件来显示文本:
from kivymd.app import MDApp from kivymd.uix.snackbar import Snackbar from kivymd.uix.label import MDLabel class TestApp(MDApp): def show_snackbar(self): snackbar = Snackbar() # 添加文本标签 snackbar.add_widget(MDLabel(text="这是Snackbar的主文本", color=(1,1,1,1))) snackbar.open() def build(self): self.show_snackbar() TestApp().run()
2. 添加可点击按钮并显示文本
同样需要手动添加MDFlatButton作为子组件,注意设置按钮的pos_hint调整位置:
from kivymd.app import MDApp from kivymd.uix.snackbar import Snackbar from kivymd.uix.label import MDLabel from kivymd.uix.button import MDFlatButton class TestApp(MDApp): def show_snackbar(self): snackbar = Snackbar() # 添加主文本 snackbar.add_widget(MDLabel(text="操作完成", color=(1,1,1,1))) # 添加按钮 btn = MDFlatButton(text="撤销", on_release=lambda x: snackbar.dismiss()) btn.pos_hint = {"center_y": 0.5} snackbar.add_widget(btn) snackbar.open() def build(self): self.show_snackbar() TestApp().run()
注意事项
- KivyMD 1.2.0属于旧版本,建议尽量升级到较新稳定版(如1.3.0+),新版本恢复了更易用的
text和button_text等属性,无需手动添加组件。 - 如果必须使用1.2.0版本,Snackbar的布局需要手动控制子组件的位置,避免内容重叠或显示异常。
内容的提问来源于stack exchange,提问作者Shayan-H20
相关产品推荐
相关产品推荐

