如何在KivyMD弹窗内单独修改MDLabel的文字颜色?
解决KivyMD弹窗内MDLabel文字颜色不生效的问题
问题核心在于KivyMD的MDLabel默认会继承当前主题的文本颜色,直接设置color属性会被主题样式覆盖,而且MDLabel本身使用的是text_color属性而非普通的color。
解决方案
修改你的MDLabel初始化代码,添加theme_text_color="Custom"属性,并将原来的color替换为text_color:
popupLabel = MDLabel( text = mensagem, theme_text_color="Custom", # 指定使用自定义文本颜色 text_color = (1,1,1,1), # 设置自定义RGBA颜色 halign = "center" )
修改后的完整代码
from kivymd.uix.label import MDLabel from kivymd.uix.button import MDRectangleFlatButton from kivy.uix.gridlayout import GridLayout from kivy.uix.popup import Popup from kivy.uix.button import Button # 补充缺失的Button导入 from functools import partial def layout_popup(title,mensagem,btn = None,args = None): layout = GridLayout(cols = 1, padding = 10) popupLabel = MDLabel( text = mensagem, theme_text_color="Custom", text_color = (1,1,1,1), halign = "center") layout.add_widget(popupLabel) if(args != None): for key in args: print(args[key]["type"]) if(args[key]["type"] == "button"): layout.add_widget( Button(text = args[key]["text"], on_press = args[key]["on_press"] ) ) popup = Popup(title =title, content = layout, size_hint =(None, None), size =(200, 200)) closeButton = MDRectangleFlatButton(text = "Fechar", pos_hint = {"center_x":0.5,"center_y":0.5}, size_hint= (1, None), on_press = popup.dismiss) layout.add_widget(closeButton) popup.open() class demo(MDApp): def build(self): layout_popup("mensagem","Erro") return None demo().run()
补充说明
- 当
theme_text_color设为"Custom"时,MDLabel会忽略主题默认的文本颜色,转而使用你设置的text_color值。 - 你的原代码中缺少
Button类的导入,修改后的代码已补充该导入,避免运行时出现报错。
内容的提问来源于stack exchange,提问作者Mateus Coelho
相关产品推荐
相关产品推荐

