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:
Mais cela ressemble à ceci:
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()
3 Réponses :
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.
comme indiqué dans la réponse de @ yaxter, je peux confirmer que dans kivy 1.9 la propriété border_radius fonctionne en fait
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é !!!
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.