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!
python kyvi label button boxlayout
Commentami!