ValueError: None is not allowed for MDSnackbarActionButtonText.color when is set the theme_text_color.
RicardoDazzling opened this issue · 4 comments
Description of the Bug
Hello everyone! I'm with a issue with the theme text color. I want to create a snackbar and give to a button the default error text color. But when I change the theme_text_color to "Error" it give-me a None Value Exception. I think that is because in the new update, the default theme text colors aren't implemented... It will be implemented in the future?
Code and Logs
It can be repliqued with a simple creation of a snackbar with the action button with the property theme_text_color
.
Like this:
from kivy.metrics import dp
from kivymd.app import MDApp
from kivymd.uix.snackbar import MDSnackbar, MDSnackbarSupportingText, MDSnackbarButtonContainer, MDSnackbarActionButton, \
MDSnackbarActionButtonText
class MainApp(MDApp):
def build(self):
pass
def on_start(self):
MDSnackbar(
MDSnackbarSupportingText(
text="Single-line snackbar with action",
),
MDSnackbarButtonContainer(
MDSnackbarActionButton(
MDSnackbarActionButtonText(
theme_text_color="Error",
text="Action button"
),
),
pos_hint={"center_y": 0.5}
),
y=dp(24),
orientation="horizontal",
pos_hint={"center_x": 0.5},
size_hint_x=0.5,
auto_dismiss=False
).open()
if __name__ == '__main__':
app = MainApp()
app.run()
Log:
[INFO ] [Logger ] Record log in .kivy\logs\kivy_24-07-02_0.txt
[INFO ] [deps ] Successfully imported "kivy_deps.angle" 0.4.0
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.3.1
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.7.0
[INFO ] [Kivy ] v2.3.0
[INFO ] [Kivy ] Installed at "...\.env\Lib\site-packages\kivy\__init__.py"
[INFO ] [Python ] v3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "D:\DR\Python\.envs\agendamd\Scripts\python.exe"
[INFO ] [Logger ] Purge log fired. Processing...
[INFO ] [Logger ] Purge finished!
[INFO ] [KivyMD ] 2.0.1.dev0, git-Unknown, 2024-05-08 (installed at "...\.env\Lib\site-packages\kivymd\__init__.py")
[INFO ] [Factory ] 195 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used <glew>
[INFO ] [GL ] OpenGL version <b'4.6.0 - Build 27.20.100.7988'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) HD Graphics 630'>
[INFO ] [GL ] OpenGL parsed version: 4, 6
[INFO ] [GL ] Shading version <b'4.60 - Build 27.20.100.7988'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Clipboard ] Provider: winctypes
[INFO ] [GL ] NPOT texture support is available
Traceback (most recent call last):
File "...\.env\Lib\site-packages\kivy\lang\builder.py", line 705, in _apply_rule
setattr(widget_set, key, value)
File "kivy\\weakproxy.pyx", line 35, in kivy.weakproxy.WeakProxy.__setattr__
File "kivy\\properties.pyx", line 520, in kivy.properties.Property.__set__
File "kivy\\properties.pyx", line 564, in kivy.properties.Property.set
File "kivy\\properties.pyx", line 555, in kivy.properties.Property.set
File "kivy\\properties.pyx", line 593, in kivy.properties.Property.check
ValueError: None is not allowed for MDSnackbarActionButtonText.color
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "snackbar.py", line 35, in <module>
app.run()
File "...\.env\Lib\site-packages\kivy\app.py", line 955, in run
self._run_prepare()
File "...\.env\Lib\site-packages\kivymd\app.py", line 142, in _run_prepare
super()._run_prepare()
File "...\.env\Lib\site-packages\kivy\app.py", line 950, in _run_prepare
self.dispatch('on_start')
File "kivy\\_event.pyx", line 731, in kivy._event.EventDispatcher.dispatch
File "snackbar.py", line 18, in on_start
MDSnackbarActionButtonText(
File "...\.env\Lib\site-packages\kivymd\uix\label\label.py", line 739, in __init__
super().__init__(*args, **kwargs)
File "...\.env\Lib\site-packages\kivymd\uix\behaviors\declarative_behavior.py", line 311, in __init__
super().__init__(**kwargs)
File "...\.env\Lib\site-packages\kivymd\theming.py", line 977, in __init__
super().__init__(**kwargs)
File "...\.env\Lib\site-packages\kivymd\uix\behaviors\backgroundcolor_behavior.py", line 164, in __init__
super().__init__(**kwarg)
File "...\.env\Lib\site-packages\kivy\uix\label.py", line 319, in __init__
super(Label, self).__init__(**kwargs)
File "...\.env\Lib\site-packages\kivy\uix\widget.py", line 366, in __init__
self.apply_class_lang_rules(
File "...\.env\Lib\site-packages\kivy\uix\widget.py", line 470, in apply_class_lang_rules
Builder.apply(
File "...\.env\Lib\site-packages\kivy\lang\builder.py", line 545, in apply
self._apply_rule(
File "...\.env\Lib\site-packages\kivy\lang\builder.py", line 714, in _apply_rule
raise BuilderException(rule.ctx, rule.line,
kivy.lang.builder.BuilderException: Parser: File "<inline>", line 76:
...
74: markup: True
75: color:
>> 76: self.theme_cls.inversePrimaryColor \
77: if self.theme_text_color == "Primary" else \
78: self.text_color
...
ValueError: None is not allowed for MDSnackbarActionButtonText.color
File "...\.env\Lib\site-packages\kivy\lang\builder.py", line 705, in _apply_rule
setattr(widget_set, key, value)
File "kivy\\weakproxy.pyx", line 35, in kivy.weakproxy.WeakProxy.__setattr__
File "kivy\\properties.pyx", line 520, in kivy.properties.Property.__set__
File "kivy\\properties.pyx", line 564, in kivy.properties.Property.set
File "kivy\\properties.pyx", line 555, in kivy.properties.Property.set
File "kivy\\properties.pyx", line 593, in kivy.properties.Property.check
Process finished with exit code 1
Versions
- OS: Windows 10
- Python: 3.12
- Kivy: 2.3.0
- KivyMD: master
Attach minimal code
Done. Sorry don't send the minimal code, when I send the issue I was late for an appointment.
I know that this compontent exists, to bypass this issue I use "Custom" theme_text_color
and set the text_color
to "errorColor", but the optionProperty from theme_text_color
accepts "Error", "Hint" and "Secundary", but already this options aren't really accepted, raising a exception. I think that it can be removed to accept only "Primary" and "Custom", the types already supported, or implemented the other. I'm just sharing that this isn't working as expected.
Thank you for the help, and good work!