Как я могу наследовать поведение RoundRectangleElevationBehavior с помощью MDCard в файле .py

На самом деле я работаю над проектом с kivy gui, и в какой-то момент я застрял в нем. На самом деле я хочу создать MDCard с высотой 15 в файле python (без использования файла .kv или строки kv). Поэтому, когда я использую свойство elevator внутри виджета MDCard в файле Python, он показывает ошибку, например :

If you see this error, this means that either youre using CommonElevationBehavior directly or your 'shader' dont have a _draw_shadow instruction, remember to overwrite this functionto draw over the image context. Тhe figure you would like. Or your class MDCard is not inherited from any of the classes ('CommonElevationBehavior', 'RectangularElevationBehavior', 'CircularElevationBehavior', 'RoundedRectangularElevationBehavior', 'ObservableShadow', 'FakeRectangularElevationBehavior', 'FakeCircularElevationBehavior')

поэтому я хочу решение, которое How i can inherit the MDCard with RoundRectangleElevationBehavior in python file (not in .kv file or kv string) чтобы я мог использовать MDCard со свойством высоты без ошибок.

Весь исходный код здесь:

from kivymd.app import MDApp
from kivymd.uix.card import MDCard
from kivymd.uix.behaviors import RoundedRectangularElevationBehavior
from kivy.uix.screenmanager import ScreenManager,Screen

class FirstWin(Screen,RoundedRectangularElevationBehavior):
    def __init__(self,**kwargs):
        super(FirstWin,self).__init__(**kwargs)
        mycard=MDCard(
            elevation=15,
            size_hint =(0.4,0.7),
            pos_hint={'center_x':0.5,'center_y':0.5}

        )
        self.add_widget(mycard)


class SecondWin(Screen):
    pass
class MymdCard(MDApp):
    def build(self):
        sm = ScreenManager()
        self.theme_cls.theme_style = "Dark"

        sm.add_widget(FirstWin(name='welcomeScreen'))
        sm.add_widget(SecondWin(name='functionScreen'))
        return sm




if __name__ == '__main__':
    MymdCard().run()

поэтому, если у вас есть какое-либо решение, пожалуйста, дайте мне знать. это будет очень полезно для меня. Благодарю вас!!

Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
30
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Из документация по поведению:

The behavior class must always be before the widget class. If you don’t specify the inheritance in this order, the behavior will not work because the behavior methods are overwritten by the class method listed first.

Итак, попробуйте изменить:

class FirstWin(Screen,RoundedRectangularElevationBehavior):

к:

class FirstWin(RoundedRectangularElevationBehavior, Screen):
Ответ принят как подходящий

Сначала создайте пользовательскую карту, которая расширяет MDCard и RoundedRectangularElevationBehaviour.

from kivymd.app import MDApp
from kivymd.uix.card import MDCard
from kivymd.uix.behaviors import RoundedRectangularElevationBehavior
from kivy.uix.screenmanager import ScreenManager,Screen

class FirstWin(Screen,RoundedRectangularElevationBehavior):
    def __init__(self,**kwargs):
        super(FirstWin,self).__init__(**kwargs)
        mycard=MyCustomCard(
            elevation=15,
            size_hint =(0.4,0.7),
            pos_hint={'center_x':0.5,'center_y':0.5}

        )
        self.add_widget(mycard)
class MyCustomCard(RoundedRectangularElevationBehavior, MDCard):
    pass

Другие вопросы по теме