Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

KivyMD. Python. Ошибка

Владимир Поляков Профи (675), на голосовании 1 неделю назад
При запуске кода:
 from kivy.lang import Builder 
from kivymd.app import MDApp

KV = '''
MDScreen:
md_bg_color: self.theme_cls.backgroundColor
MDButton:
style: "elevated"
pos_hint: {"center_x": .5, "center_y": .5}
'''


class Example(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Olive" # "Purple", "Red"
return Builder.load_string(KV)


Example().run()
появляется ошибка:
  Traceback (most recent call last): 
File "main.py", line 2, in
from kivymd.app import MDApp
File "/home/vladimir/.local/lib/python3.8/site-packages/kivymd/app.py", line 65, in
from kivymd.theming import ThemeManager
File "/home/vladimir/.local/lib/python3.8/site-packages/kivymd/theming.py", line 49, in
from materialyoucolor.utils.color_utils import argb_from_rgba_01
File "/home/vladimir/.local/lib/python3.8/site-packages/materialyoucolor/utils/color_utils.py", line 1, in
from materialyoucolor.utils.math_utils import matrix_multiply, clamp_int
File "/home/vladimir/.local/lib/python3.8/site-packages/materialyoucolor/utils/math_utils.py", line 53, in
def matrix_multiply(row: list[float], matrix: list[list[float]]) -> list[float]:
TypeError: 'type' object is not subscriptable
Пользуюсь Ubuntu 20.04.6
Голосование за лучший ответ
Рустам Абдрашитов Мыслитель (8566) 1 месяц назад
 from typing import List 

def matrix_multiply(row: List[float], matrix: List[List[float]]) -> List[float]:
Рустам АбдрашитовМыслитель (8566) 1 месяц назад
 from kivy.lang import Builder 
from kivymd.app import MDApp

KV = '''
MDScreen:
md_bg_color: self.theme_cls.background_color
MDButton:
text: "Нажми меня" # Добавлен текст кнопки для ясности
style: "elevated"
pos_hint: {"center_x": 0.5, "center_y": 0.5}
'''

class Example(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Olive" # Опции: "Purple", "Red"
return Builder.load_string(KV)

if __name__ == "__main__":
Example().run()
Рустам Абдрашитов Мыслитель (8566) Рустам Абдрашитов, советую такой код вместо вашего ре лучше
Рустам АбдрашитовМыслитель (8566) 1 месяц назад
Улучшено: Добавлен текст кнопки
Я добавил свойство text к MDButton, чтобы было понятно, что делает кнопка. Это улучшает пользовательский опыт, предоставляя контекст.
2. Согласованность именования
Изменил self.theme_cls.backgroundColor на self.theme_cls.background_color для согласованности с соглашениями об именовании Kivy.
3. Проверка главного модуля
Обернул вызов Example().run() в блок if __name__ == "__main__":. Это распространенная практика в Python, позволяющая импортировать скрипт без немедленного выполнения приложения.
4. Комментарии для ясности
Добавил комментарии, чтобы объяснить назначение определенных строк, что может быть полезно для любого, кто будет читать код позже.
5. Читаемость
Поддерживал согласованное выравнивание и пробелы для улучшения читаемости.
Похожие вопросы