Layout
Pada Kivy ada beberapa macam layout yang dapat dipergunakan dalam menata aplikasi yang kita buat.
Kivy menyediakan beberapa layout untuk dipergunakan:
- AnchorLayout : Widget akan diletakkan pada posisi :atas, bawah, kanan, kiri dan tengah
- BoxLayout : Widget akan diletakkan secara berurutan sesuai dengan nilai dari properti orientation: vertical atau horizontal
FloatLayout:
Widget dapat ditempatkan secara bebas tanpa ada batasanRelativeLayout:
Posisi widget anak akan ditempatkan pada posisi tergantung pada layout induk.GridLayout:
Widget akan diletakkan dalam bentuk grid sesuai dengan nilai properti rows dan cols.PageLayout:
Digunakan untuk membuat multi halaman secara mudah, dan mempergunakan tepi layout untuk berpindah halamanScatterLayout:
Widget akan ditata seperti pada RelativeLayout, akan tetapi dapat diubahukuran dan diputarStackLayout:
Widget akan disusun secara kanan ke kiri kemudian atas ke bawah atau atas ke bawah kemudian kanan ke kiri.Kita akan bahas satu per satu
BoxLayout:
Layout ini menata widget yang ditambahkan secara berurutan baik secara horizontal maupun vertical.
properties:
-Orientation : "vertical"/"horizontal"
contoh :
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class container(BoxLayout):
pass
class Boxlayoutapp(App):
def build(self):
return container()
if __name__ == "__main__":
Boxlayoutapp().run()
boxlayout.kv
<container>:
orientation: 'horizontal'
BoxLayout:
minimum_size: 200,200
Button:
text: 'Button 1'
BoxLayout:
orientation: "vertical"
BoxLayout:
Button:
text: 'Button 2'
BoxLayout:
orientation: "horizontal"
BoxLayout:
Button:
text: 'Button 3'
BoxLayout:
orientation: "vertical"
Button:
text: 'Button 4'
Button:
text: 'Button 5'
result:
GridLayout:
Pada tipe layout ini widget akan diatur sesuai dengan penataan grid yaitu terbagi atas baris dan kolom, sehingga posisi dari widget sangat tergantung pada nilai dari properti rows dan cols.
property:
rows:
Untuk menentukan jumlah baris pada grid.cols:
Untuk menentukan jumlah kolom pada grid.row_force_default: flag yang dipergunakan untuk memaksa baris yang ada untuk mengabaikan setting height dari widget di dalamnya.
rows_minimum: Dipergunakan untuk menentukan height dari masing-masing baris.
col_force_default: flag yang dipergunakan untuk memaksa kolom yang ada untuk mengabaikan setting width dari widget di dalamnya.
cols_minimum: Dipergunakan untuk menentukan width dari masing-masing kolom.
Contoh:
Main,py
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
class GridLayout(GridLayout):
pass
class Gridlayoutapp(App):
def build(self):
return GridLayout()
if __name__=="__main__":
Gridlayoutapp().run()
gridlayout.kv
<GridLayout>:
rows: 3
rows_minimum: {0:100,1:150,2:200}
row_force_default: True
cols_minimum: {0:100,1:150,2:200}
col_force_default: True
Button:
text: "Button 1"
Button:
text: "Button 2"
Button:
text: "Button 3"
Button:
text: "Button 4"
Button:
text: "Button 5"
Button:
text: "Button 6"
Button:
text: "Button 7"
Button:
text: "Button 8"
Button:
text: "Button 9"
Result: