Kivy the open source Python library for developing applications has several layouts for the developer to choose from including Anchor Layout, BoxLayout, FloatLayout, RelativeLayout, GridLayout, PageLayout, ScatterLayout and StackLayout.
The anchor layout is a layout in which widgets are placed to one of the borders. The borders can be left, right, top, bottom and center. The class kivy.uix.anchorlayout.AnchorLayout implements the anchor layout.
AnchorLayout can be initialized with the parameters anchor_x and anchor_y to select which border of a parent container, the widgets are placed to.
The anchor_x parameter can be passed the values “left”, “right” and “center”.
The anchor_y parameter can be passed the values “top”, “bottom” and “center”.
In effect, a Kivy widget placed using the anchor layout is placed in any of the following layout regions: Top-left, top-center, top-right, center-left, center-center, center-right, bottom-left, bottom-center and bottom-right.
Remember adding multiple widgets to an anchor layout, only positions the widgets at the same location. In the example given here, two anchor layouts are created. The first anchor layout has its anchor at Bottom-Left and the second anchor layout has its anchor at Top-Right. Both of them are added with two buttons and the anchor-layouts themselves are added to a BoxLayout instance which is returned from the build() method of the App class.
# Sample Python application demonstrating the working of AnchorLayout in Kivy
# Module imports
from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.graphics import Color, Rectangle
# A Kivy app demonstrating the working of anchor layout
# Anchor Layout1
anchorLayout1 = AnchorLayout(anchor_x='left', anchor_y='bottom')
button1 = Button(text='Bottom-Left', size_hint = (0.3, 0.3))
# Anchor Layout2
anchorLayout2 = AnchorLayout()
anchorLayout2.anchor_x = 'right'
anchorLayout2.anchor_y = 'top'
# Add the anchor layouts to a box layout
button2 = Button(text='Top-Right', size_hint = (0.3, 0.3))
# Create a box layout
boxLayout = BoxLayout()
# Add both the anchor layouts to the box layout
# Return the boxlayout widget
# Run the Kivy app
if __name__ == '__main__':