Loading ...

Usare i BoxLayout in Python Kivy

Usare i BoxLayout in Python Kivy

I BoxLayout sono dei layout che impostano i componenti in maniera orizzontale / verticale andando a riempire tutto lo spazio a disposizione.

Quindi è un layout abbastanza automatico e semplice da usare; non è adatto se vogliamo interfacce grafiche complesse (probabilmente lo usareste in altri layout più complessi).

Comunque andiamo a vedere qualche esempio in Python Kivy:

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

class MyApp(App):

    def build(self):
        self.layout = BoxLayout()
        self.label1 = Label(text='Label 1')
        self.label2 = Label(text='Label1')
        self.btn1 = Button(text='Button 1')
        self.btn2 = Button(text='Button 2')

        self.layout.add_widget(self.label1)
        self.layout.add_widget(self.label2)
        self.layout.add_widget(self.btn1)
        self.layout.add_widget(self.btn2)

        return self.layout

if __name__ == '__main__':
    MyApp().run()

Aggiungiamo due Label e due Button; di default l'orientamento è orizzontale, e quindi saranno messi uno a fianco all'altro.

L'ordinamento è dettato dall'ordine in cui si inseriscono nel codice con il metodo add_widget; oppure usando il suo parametro index.

Se volessimo metterli uno sotto l'altro:

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

class MyApp(App):

    def build(self):
        self.layout = BoxLayout(orientation='vertical')
        self.label1 = Label(text='Label 1')
        self.label2 = Label(text='Label1')
        self.btn1 = Button(text='Button 1')
        self.btn2 = Button(text='Button 2')

        self.layout.add_widget(self.label1)
        self.layout.add_widget(self.label2)
        self.layout.add_widget(self.btn1)
        self.layout.add_widget(self.btn2)

        return self.layout

if __name__ == '__main__':
    MyApp().run()

Abbiamo specificato l'orientamento.

Possiamo anche specificare lo spazio tra i componenti:

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

class MyApp(App):

    def build(self):
        self.layout = BoxLayout(orientation='vertical',spacing=10)
        self.label1 = Label(text='Label 1')
        self.label2 = Label(text='Label1')
        self.btn1 = Button(text='Button 1')
        self.btn2 = Button(text='Button 2')

        self.layout.add_widget(self.label1)
        self.layout.add_widget(self.label2)
        self.layout.add_widget(self.btn1)
        self.layout.add_widget(self.btn2)

        return self.layout

if __name__ == '__main__':
    MyApp().run()

Enjoy!