1
votes

Comment créer des bords arrondis dans un MDCard KivyMD

Je fais une application dans kivy en utilisant kivyMD mais je veux insérer une MDcard, le fait est que je veux que la MDCard ressemble à ceci: entrez la description de l'image ici

Mais cela ressemble à ceci:

entrez la description de l'image ici

Je le sais peut être avec border_radius mais je ne sais pas comment faire, voici mon code:

PY:

<Home>

    MDCard:
        size_hint: None, None
        size: "280dp", "180dp"
        pos_hint: {"center_x": .5, "center_y": .5}

KV:

import kivy
from kivymd.app import MDApp
from kivymd.uix.card import MDCard

class Home(MDCard):
    pass

class Manage(MDApp):
    title = 'QUICKP'
    def build(self):
        return Home()


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


0 commentaires

3 Réponses :


1
votes

J'ai eu le même problème, et il existe une propriété border_radius pour les cartes MDCards, mais cela ne fonctionne pas. Mais j'ai résolu cela avec ce code:

class Plan(RectangularElevationBehavior, RectangularRippleBehavior, FloatLayout):
    ripple_scale = 1.4
    text = StringProperty()
    text_label = StringProperty()

Et voici une partie du fichier .py:

<MyCard>:
    orientation: 'vertical'
    size_hint: 0.1, 1
    canvas.before:
        Color:
            rgba: app.theme_cls.primary_color
        RoundedRectangle:
            radius: [10]
            size: self.size
            pos: self.pos
    FloatLayout:
        size: self.size
        pos: self.pos
        pos_hint: {"x": -0.1, "y": -0.6}

Donc, cela crée un MyCard (classe FloatLayout) avec Canvas, qui hérite de FloatLayout, RippleBehaviour et ElevationBehaviour. Et puis vous pouvez ajouter à ce FloatLayout pour en gérer le contenu. Mais si cela semble étrange à cause de la position, essayez de jouer avec pos_hint-s.


1 commentaires

comme indiqué dans la réponse de @ yaxter, je peux confirmer que dans kivy 1.9 la propriété border_radius fonctionne en fait



0
votes

Les gens conseillent d'utiliser canvas c'est OK, mais cela augmente votre codage et le rend très complexe. Allez simplement à la ligne 631 de Kivymd> uix> card.py changez la valeur par défaut de 3dp à par exemple 20dp ou ce que vous voulez. puis revenez à votre code et tapez radius: [] et insérez votre nombre désiré de 20 à 0. Terminé !!!


0 commentaires

1
votes

Vous n'avez pas besoin de modifier le fichier card.py ni d'utiliser canvas, il vous suffit de placer ce qui suit dans votre code kivy

border_radius: 20
radius: [15]

Dans border_radius vous mettez la limite de bordure que vous pourrez utiliser et dans le rayon vous mettez le niveau de bordure que votre mdcard aura.


0 commentaires