CircularLayout#
#
CircularLayout is a special layout that places widgets around a circle.
MDCircularLayout#
Usage
from kivy.lang.builder import Builder
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
KV = '''
MDScreen:
md_bg_color: self.theme_cls.backgroundColor
MDCircularLayout:
id: container
pos_hint: {"center_x": .5, "center_y": .5}
row_spacing: min(self.size) * 0.1
'''
class Example(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
return Builder.load_string(KV)
def on_start(self):
for x in range(1, 49):
self.root.ids.container.add_widget(
MDLabel(text=f"{x}", adaptive_size=True)
)
Example().run()
from kivy.clock import Clock
from kivymd.app import MDApp
from kivymd.uix.circularlayout import MDCircularLayout
from kivymd.uix.label import MDLabel
from kivymd.uix.screen import MDScreen
class Example(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
self.screen = MDScreen(
MDCircularLayout(
id="container",
pos_hint={"center_x": 0.5, "center_y": 0.5},
),
md_bg_color=self.theme_cls.backgroundColor
)
return self.screen
def on_start(self):
def on_start(*args):
container.row_spacing = min(container.size) * 0.1
container = self.screen.get_ids().container
for x in range(1, 49):
self.screen.get_ids().container.add_widget(
MDLabel(text=f"{x}", adaptive_size=True)
)
Clock.schedule_once(on_start)
Example().run()
API - kivymd.uix.circularlayout#
- class kivymd.uix.circularlayout.MDCircularLayout(*args, **kwargs)#
Circular layout class.
For more information see in the
DeclarativeBehaviorandFloatLayoutclasses documentation.- degree_spacing#
The space between children in degree.
degree_spacingis anNumericPropertyand defaults to 30.
- circular_radius#
Radius of circle. Radius will be the greatest value in the layout if circular_radius if not specified.
circular_radiusis anNumericPropertyand defaults to None.
- start_from#
The positon of first child in degree.
start_fromis anNumericPropertyand defaults to 60.
- max_degree#
Maximum range in degree allowed for each row of widgets before jumping to the next row.
max_degreeis anNumericPropertyand defaults to 360.
- circular_padding#
Padding between outer widgets and the edge of the biggest circle.
circular_paddingis anNumericPropertyand defaults to 25dp.
- row_spacing#
Space between each row of widget.
row_spacingis anNumericPropertyand defaults to 50dp.
- clockwise#
Direction of widgets in circular direction.
clockwiseis anBooleanPropertyand defaults to True.
- remove_widget(widget, **kwargs)#
Remove a widget from the children of this widget.
- Parameters:
- widget:
Widget Widget to remove from our children list.
- widget:
>>> from kivy.uix.button import Button >>> root = Widget() >>> button = Button() >>> root.add_widget(button) >>> root.remove_widget(button)
- do_layout(*largs, **kwargs)#
This function is called when a layout is called by a trigger. If you are writing a new Layout subclass, don’t call this function directly but use
_trigger_layout()instead.The function is by default called before the next frame, therefore the layout isn’t updated immediately. Anything depending on the positions of e.g. children should be scheduled for the next frame.
Added in version 1.0.8.