Card¶
See also
Cards contain content and actions about a single subject.
KivyMD provides the following card classes for use:
Note
MDCard
inherited from
BoxLayout
. You can use all parameters and
attributes of the BoxLayout
class in the
MDCard
class.
MDCard¶
from kivy.lang import Builder
from kivymd.app import MDApp
KV = '''
Screen:
MDCard:
size_hint: None, None
size: "280dp", "180dp"
pos_hint: {"center_x": .5, "center_y": .5}
'''
class TestCard(MDApp):
def build(self):
return Builder.load_string(KV)
TestCard().run()
Add content to card:¶
from kivy.lang import Builder
from kivymd.app import MDApp
KV = '''
Screen:
MDCard:
orientation: "vertical"
padding: "8dp"
size_hint: None, None
size: "280dp", "180dp"
pos_hint: {"center_x": .5, "center_y": .5}
MDLabel:
text: "Title"
theme_text_color: "Secondary"
size_hint_y: None
height: self.texture_size[1]
MDSeparator:
height: "1dp"
MDLabel:
text: "Body"
'''
class TestCard(MDApp):
def build(self):
return Builder.load_string(KV)
TestCard().run()
MDCardSwipe¶
To create a card with swipe-to-delete behavior, you must create a new class
that inherits from the MDCardSwipe
class:
<SwipeToDeleteItem>:
size_hint_y: None
height: content.height
MDCardSwipeLayerBox:
MDCardSwipeFrontBox:
OneLineListItem:
id: content
text: root.text
_no_ripple_effect: True
class SwipeToDeleteItem(MDCardSwipe):
text = StringProperty()
End full code¶
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivymd.app import MDApp
from kivymd.uix.card import MDCardSwipe
KV = '''
<SwipeToDeleteItem>:
size_hint_y: None
height: content.height
MDCardSwipeLayerBox:
# Content under the card.
MDCardSwipeFrontBox:
# Content of card.
OneLineListItem:
id: content
text: root.text
_no_ripple_effect: True
Screen:
BoxLayout:
orientation: "vertical"
spacing: "10dp"
MDToolbar:
elevation: 10
title: "MDCardSwipe"
ScrollView:
MDList:
id: md_list
padding: 0
'''
class SwipeToDeleteItem(MDCardSwipe):
'''Card with `swipe-to-delete` behavior.'''
text = StringProperty()
class TestCard(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.screen = Builder.load_string(KV)
def build(self):
return self.screen
def on_start(self):
'''Creates a list of cards.'''
for i in range(20):
self.screen.ids.md_list.add_widget(
SwipeToDeleteItem(text=f"One-line item {i}")
)
TestCard().run()
Binding a swipe to one of the sides of the screen¶
<SwipeToDeleteItem>:
# By default, the parameter is "left"
anchor: "right"
Swipe behavior¶
<SwipeToDeleteItem>:
# By default, the parameter is "hand"
type_swipe: "hand"
<SwipeToDeleteItem>:
type_swipe: "auto"
Removing an item using the type_swipe = "auto"
parameter¶
The map provides the MDCardSwipe.on_swipe_complete
event.
You can use this event to remove items from a list:
<SwipeToDeleteItem>:
on_swipe_complete: app.on_swipe_complete(root)
def on_swipe_complete(self, instance):
self.screen.ids.md_list.remove_widget(instance)
End full code¶
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivymd.app import MDApp
from kivymd.uix.card import MDCardSwipe
KV = '''
<SwipeToDeleteItem>:
size_hint_y: None
height: content.height
type_swipe: "auto"
on_swipe_complete: app.on_swipe_complete(root)
MDCardSwipeLayerBox:
MDCardSwipeFrontBox:
OneLineListItem:
id: content
text: root.text
_no_ripple_effect: True
Screen:
BoxLayout:
orientation: "vertical"
spacing: "10dp"
MDToolbar:
elevation: 10
title: "MDCardSwipe"
ScrollView:
MDList:
id: md_list
padding: 0
'''
class SwipeToDeleteItem(MDCardSwipe):
text = StringProperty()
class TestCard(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.screen = Builder.load_string(KV)
def build(self):
return self.screen
def on_swipe_complete(self, instance):
self.screen.ids.md_list.remove_widget(instance)
def on_start(self):
for i in range(20):
self.screen.ids.md_list.add_widget(
SwipeToDeleteItem(text=f"One-line item {i}")
)
TestCard().run()
Add content to the bottom layer of the card¶
To add content to the bottom layer of the card,
use the MDCardSwipeLayerBox
class.
<SwipeToDeleteItem>:
MDCardSwipeLayerBox:
padding: "8dp"
MDIconButton:
icon: "trash-can"
pos_hint: {"center_y": .5}
on_release: app.remove_item(root)
End full code¶
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivymd.app import MDApp
from kivymd.uix.card import MDCardSwipe
KV = '''
<SwipeToDeleteItem>:
size_hint_y: None
height: content.height
MDCardSwipeLayerBox:
padding: "8dp"
MDIconButton:
icon: "trash-can"
pos_hint: {"center_y": .5}
on_release: app.remove_item(root)
MDCardSwipeFrontBox:
OneLineListItem:
id: content
text: root.text
_no_ripple_effect: True
Screen:
BoxLayout:
orientation: "vertical"
spacing: "10dp"
MDToolbar:
elevation: 10
title: "MDCardSwipe"
ScrollView:
MDList:
id: md_list
padding: 0
'''
class SwipeToDeleteItem(MDCardSwipe):
text = StringProperty()
class TestCard(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.screen = Builder.load_string(KV)
def build(self):
return self.screen
def remove_item(self, instance):
self.screen.ids.md_list.remove_widget(instance)
def on_start(self):
for i in range(20):
self.screen.ids.md_list.add_widget(
SwipeToDeleteItem(text=f"One-line item {i}")
)
TestCard().run()
API - kivymd.uix.card
¶
-
class
kivymd.uix.card.
MDSeparator
(**kwargs)¶ Bases:
kivymd.theming.ThemableBehavior
,kivy.uix.boxlayout.BoxLayout
A separator line.
-
color
¶ Separator color in
rgba
format.color
is aListProperty
and defaults to [].
-
on_orientation
(self, *args)¶
-
-
class
kivymd.uix.card.
MDCard
¶ Bases:
kivymd.theming.ThemableBehavior
,kivymd.uix.behaviors.BackgroundColorBehavior
,kivymd.uix.behaviors.RectangularElevationBehavior
,kivy.uix.boxlayout.BoxLayout
-
border_radius
¶ Card border radius.
border_radius
is aNumericProperty
and defaults to ‘3dp’.
-
background
¶ Background image path.
background
is aStringProperty
and defaults to ‘’.
-
-
class
kivymd.uix.card.
MDCardSwipe
(**kw)¶ Bases:
kivy.uix.relativelayout.RelativeLayout
- Events
on_swipe_complete
Called when a swipe of card is completed.
-
open_progress
¶ Percent of visible part of side panel. The percent is specified as a floating point number in the range 0-1. 0.0 if panel is closed and 1.0 if panel is opened.
open_progress
is aNumericProperty
and defaults to 0.0.
-
opening_transition
¶ The name of the animation transition type to use when animating to the
state
‘opened’.opening_transition
is aStringProperty
and defaults to ‘out_cubic’.
-
closing_transition
¶ The name of the animation transition type to use when animating to the
state
‘closed’.closing_transition
is aStringProperty
and defaults to ‘out_sine’.
-
anchor
¶ Anchoring screen edge for card. Available options are: ‘left’, ‘right’.
anchor
is aOptionProperty
and defaults to left.
-
swipe_distance
¶ The distance of the swipe with which the movement of navigation drawer begins.
swipe_distance
is aNumericProperty
and defaults to 10.
-
opening_time
¶ The time taken for the card to slide to the
state
‘open’.opening_time
is aNumericProperty
and defaults to 0.2.
-
state
¶ Detailed state. Sets before
state
. Bind tostate
instead ofstatus
. Available options are: ‘closed’, ‘opened’.status
is aOptionProperty
and defaults to ‘closed’.
-
max_swipe_x
¶ If, after the events of
on_touch_up
card position exceeds this value - will automatically execute the methodopen_card
, and if not - will automatically beclose_card
method.max_swipe_x
is aNumericProperty
and defaults to 0.3.
-
max_opened_x
¶ The value of the position the card shifts to when
type_swipe
s set to ‘hand’.max_opened_x
is aNumericProperty
and defaults to 100dp.
-
type_swipe
¶ Type of card opening when swipe. Shift the card to the edge or to a set position
max_opened_x
. Available options are: ‘auto’, ‘hand’.type_swipe
is aOptionProperty
and defaults to auto.
-
add_widget
(self, widget, index=0, canvas=None)¶
-
on_swipe_complete
(self, *args)¶ Called when a swipe of card is completed.
-
on_anchor
(self, instance, value)¶
-
on_open_progress
(self, instance, value)¶
-
on_touch_move
(self, touch)¶
-
on_touch_up
(self, touch)¶
-
on_touch_down
(self, touch)¶
-
complete_swipe
(self)¶
-
open_card
(self)¶
-
close_card
(self)¶
-
class
kivymd.uix.card.
MDCardSwipeFrontBox
¶ Bases:
kivymd.uix.card.MDCard
-
class
kivymd.uix.card.
MDCardSwipeLayerBox
¶ Bases:
kivy.uix.boxlayout.BoxLayout