A KV nyelv lehetővé teszi, hogy az alkalmazás kinézetét külön fájlban határozzuk meg.
from kivy.app import App from kivy.uix.button import Button class TesztApp(App): def build(self): btn = Button() return btn def csinal(self): self.title ='valami' TesztApp().run()
Nem határoztuk meg a btn kinézetét.
Vesszük a TesztApp osztályt, „App” nélkül, kisbetűssé alakítjuk, marad teszt szó. Ebből készítünk egy teszt.kv nevű fájlt, amiben leírjuk a Button kinézetét:
<Button>: text: 'Vált' size_hint: (.5, .5) pos_hint: {'center_x':.5, 'center_y':.5} on_press: app.csinal()
A .kv fájl persze lehet máshol és más néven. Ekkor használjuk a következő formát:
Builder.load_file('utvonal/fajlnev.kv')
from kivy.app import App from kivy.lang.builder import Builder class OrarendApp(App): def build(self): return Builder.load_file('main.kv') OrarendApp().run()
Screen: BoxLayout: Button: Button:
A main.kv tartalma, olyan mintha ezt írtam volna:
screen = Screen() box = BoxLayout() box.add_widget(Button()) box.add_widget(Button()) screen.add_widget(box)
Az előző példánkban a gombok horizontálisan vannak elrendezve. Nézzünk, hogyan állítjuk be vertikális elrendezést.
Screen: BoxLayout: orientation: 'vertical' Button: Button:
Az előző fejezetet folytatva, most adjunk gombjainak, feliratokat.
Screen: BoxLayout: orientation: 'vertical' Button: text: 'Első' Button: text: 'Második'
Ebben a példában, csak az eseménykezelést fogjuk .kv fájlban végezni.
from kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.textinput import TextInput class Box1(BoxLayout): btnOne = Button() btnTwo = Button() btnCal = Button() txtOne = TextInput() def calc(self, txt): txt.text = "Más" class TesztApp(App): def build(self): return Box1() def csinal(self): self.title ='valami' def vissza_csinal(self): self.title ='eredeti' TesztApp().run()
<Box1>: Button: text: 'Vált' on_press: app.csinal() Button: text: 'Vissza' on_press: app.vissza_csinal() Button: text: 'Beállít' on_press: root.calc(txt) TextInput: id: txt text: 'kezdés'
from kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.textinput import TextInput class Box1(BoxLayout): btnOne = Button() btnTwo = Button() btnCal = Button() txtOne = TextInput() def calc(self, txt): txt.text = "Más" class Box2(BoxLayout): btnOne = Button() btnTwo = Button() btnCal = Button() txtOne = TextInput() def calc(self, txt): txt.text = "Más" class RootBox(BoxLayout): box1 = Box1() box2 = Box2() class TesztApp(App): def build(self): return RootBox() def csinal(self): self.title ='valami' def vissza_csinal(self): self.title ='eredeti' TesztApp().run()
<Box1>: Button: text: 'Vált' on_press: app.csinal() Button: text: 'Vissza' on_press: app.vissza_csinal() Button: text: 'Beállít' on_press: root.calc(txt) TextInput: id: txt text: 'kezdés' <Box2>: Button: text: 'Vált újra' on_press: app.csinal() Button: text: 'Vissza újra' on_press: app.vissza_csinal() Button: text: 'Beállít' on_press: root.calc(txt) TextInput: id: txt text: 'kezdés' <RootBox>: BoxLayout: orientation: 'vertical' Box1: Box2: