Kivy is platform independent as it can run on Android, IOS, Linux, Windows, etc. Kivy provides you with the functionality to write code once and run it on different platforms. It is mainly used for developing Android application, but that does not mean that it cannot be used in desktop applications.
Grid layout:
- The widget must be placed in a specific column / row. Each child is automatically assigned a position based on the layout configuration and the child’s index in the child list.
- The grid layout must always contain one of the following input constraints:
GridLayout.cols or GridLayout.rows. If you don’t specify columns or rows, the layout will throw an exception. - The GridLayout places children in a matrix. It takes up the available space and divides it into columns and rows, then adds widgets to the resulting "cells".
- The row and columns are the same as we see in the matrix, here we can adjust the size of each grid.
- The initial size is set by the col_default_width and row_default_height properties. We can force the default size by setting the col_force_default or row_force_default property. This will force the layout to ignore the width and size_hint properties of the children and use the default size.
The first thing we need to do to use the GridLayout is import it.
from kivy.uix.gridlayout import GridLayout
A basic approach to creating a GridLayout:
1) import kivy 2) import kivyApp 3) import button 4) import Gridlayout 5) Set minimum version (optional) 6) create App class: - define build function: add widget (Buttons) 7) return Layout / widget / Class (according to requirement) 8) Run an instance of the class
Implementing the —
Code # 1:
In the example below, all widgets will be the same size. By default, size_hint is (1, 1), so the widget will have the full size of the parent:
# Sample Python application demonstrating # How to create a Qiwi GridLayout # import kivy module import kivy # Your application base class inherits from the application class. # app: always refers to your application instance from kivy.app import App # cos gives a button in kiw # if not imported shows an error from kivy.uix.button import Button # GridLayout arranges children in a matrix. # It takes up available space and # divides it into columns and rows, # then adds widgets to the resulting "Cells". from kivy.uix.gridlayout import GridLayout # create application class class Grid_LayoutApp (App): # we need to create an application # return the widget to the build () function. def build ( self ): # add GridLayouts to the application # Identify the number columns # You can use a string as well as needed layout = GridLayout (cols = 2 ) # 1st row layout.add_widget (Button (text = ’Hello 1’ )) layout.add_widget (Button (text = ’World 1’ ) ) # 2nd row layout.add_widget (Button (text = ’Hello 2’ )) layout.add_widget (Button (text = ’ World 2’ )) # 3rd row layout.add_widget (Button (text = ’Hello 3’ )) layout.add_widget (Button (text = ’World 3’ )) # 4th row layout.add_widget (Button (text = ’Hello 4’ )) layout.add_widget (Button (text = ’World 4’ )) # return layout return layout # create an App class root = Grid_LayoutApp () # launch the application root.run () |
Output:
Now just change the class code in the above code with code # 2 and code # 3, except they will all be the same as code # 1 and run the code after the changes, you will get the following results.
Code # 2:
Now let’s set the Hello buttons to 100px instead of using size_hint_x = 1:
# create application class class Grid_LayoutApp (App): # to create the application we need # return the widget to the build () function. def build ( self ): # add GridLayouts to the application # Column number definition # You can use a string, but also as required layout = GridLayout (cols = 2 ) # 1st row layout.add_widget (Button (text = ’ Hello 1 ’ , size_hint_x = None , width = 100 )) layout.add_widget (Button (text = ’ World 1’ )) # 2nd row layout.add_widget (Button (text = ’Hello 2’ , size_hint_x = None , width = 100 )) layout.add_widget (Button (text = ’World 2’ )) # 3rd row layout.add_widget (Button (text = ’Hello 3’ , size_hint_x = None , width = 100 )) layout.add_widget (Button ( text = ’World 3’ )) # 4th row layout.add_widget (Button (text = ’ Hello 4 ’ , size_hint_x = None , width = 100 )) layout.add_widget (Button (text = ’World 4’ )) # return layout return layout |
Output:
Code No. 3:
Now let’s set the line-height to a specific size:
# create application class class Grid_LayoutApp (App): # we need to create an application # return the widget to the build () function. def build ( self ): # adding GridLayouts to your application # Determination of the number of columns and the size of the buttons, ie. heights layout = GridLayout (cols = 2 , row_force_default = True , row_default_height = 30 ) # 1st row layout.add_widget (Button (text = ’ Hello 1’ , size_hint_x = None , width = 100 )) layout.add_widget (Button (text = ’World 1’ )) # 2nd row layout.add_widget (Button (text = ’ Hello 2’ , size_hint_x = None , width = 100 )) layout.add_widget (Button (text = ’ World 2’ )) # 3rd row layout.add_widget (Button (text = ’Hello 3’ , size_hint_x = None , width = 100 )) layout.add_widget (Button (text = ’ World 3’ )) # 4th row layout.add_widget (Button (text = ’Hello 4’ , size_hint_x = None , width = 100 )) layout.add_widget (Button (text = ’World 4’ )) # return layout return layout |
Output:
Link: https://kivy.org/doc/st able / api-kivy.uix.gridlayout.html
Shop
Best laptop for Excel
$
Best laptop for Solidworks
$399+
Best laptop for Roblox
$399+
Best laptop for development
$499+
Best laptop for Cricut Maker
$299+
Best laptop for hacking
$890
Best laptop for Machine Learning
$699+
Raspberry Pi robot kit
$150
Latest questions
PythonStackOverflow
Common xlabel/ylabel for matplotlib subplots
1947 answers
PythonStackOverflow
Check if one list is a subset of another in Python
1173 answers
PythonStackOverflow
How to specify multiple return types using type-hints
1002 answers
PythonStackOverflow
Printing words vertically in Python
909 answers
PythonStackOverflow
Python Extract words from a given string
798 answers
PythonStackOverflow
Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?
606 answers
PythonStackOverflow
Python os.path.join () method
384 answers
PythonStackOverflow
Flake8: Ignore specific warning for entire file
360 answers
Wiki
Python | How to copy data from one Excel sheet to another
Common xlabel/ylabel for matplotlib subplots
Check if one list is a subset of another in Python
How to specify multiple return types using type-hints
Printing words vertically in Python
Python Extract words from a given string
Cyclic redundancy check in Python
Finding mean, median, mode in Python without libraries
Python add suffix / add prefix to strings in a list
Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?
Python - Move item to the end of the list
Python - Print list vertically