

新闻资讯
行业动态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() 模式,以确保代码健壮性与未来兼容性。