

新闻资讯
技术学院kivymd 1.2.0 版本中 `snackbar` 组件移除了 `text` 初始化参数,导致按旧文档写法(如 `snackbar(text="message")`)报错;降级至 1.1.1 版本可恢复兼容用法。
在 KivyMD 1.2.0 中,Snackbar 的构造方式发生了重大变更:不再支持通过 text 参数直接初始化。这是由于该版本重构了 Snackbar 类,将其从一个简单文本提示组件升级为更灵活、可自定义内容的容器组件——其默认构造函数已移除 text 关键字参数,转而要求用户显式调用 open() 方法前,通过 Snackbar.text 属性赋值,或使用 Snackbar().open() 配合子控件(如 MDLabel)构建内容。
但需注意:官方文档(尤其是 1.2.0 对应文档)尚未完全同步更新此变更,仍大量引用旧版 text= 语法,造成开发者混淆。 实际测试表明,在 1.2.0 中执行以下代码会触发 TypeError:
from kivymd.uix.snackbar import Snackbar # ❌ 错误:KivyMD 1.2.0 中此写法不被支持 snack = Snackbar(text="Hello World!") # TypeError: __init__() got an unexpected keyword argument 'text'
✅ 正确做法(适配 1.2.0+):
from kivymd.uix.snackbar import Snackbar from kivymd.uix.label import MDLabel # 方式1:设置 text 属性后 open() snack = Snackbar() snack.text = "Operation completed successfully!" snack.open() # 方式2:自定义内容(推荐用于复杂提示) content = MDLabel( text="Saved to clipboard", theme_text_color="Custom", text_color=(1, 1, 1, 1), size_hint_x=1.0, ) snack = Snackbar() snack.add_widget(content) snack.open()
⚠️ 注意事项:
pip uninstall kivymd -y pip install kivymd==1.1.1
总结:问题本质是 KivyMD 主动弃用了 text 初始化参数,而非 Bug。开发者应根据所用版本选择对应 API —— 1.1.1 及以前用 Snackbar(text=...);1.2.0 及以后请改用 snack.text = ... + snack.open() 模式,以确保代码健壮性与未来兼容性。