Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:python:kivy:kv_nyelv

< Kivy

A KV nyelv

A KV nyelvről

A KV nyelv lehetővé teszi, hogy az alkalmazás kinézetét külön fájlban határozzuk meg.

gomb.py
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:

teszt.kv
<Button>:
	text: 'Vált'
	size_hint: (.5, .5)
	pos_hint: {'center_x':.5, 'center_y':.5}
	on_press: app.csinal()

KV fájl más forrásból

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()
main.kv
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)

BoxLayout orientáció

Az előző példánkban a gombok horizontálisan vannak elrendezve. Nézzünk, hogyan állítjuk be vertikális elrendezést.

main.kv
Screen:
    BoxLayout:
        orientation: 'vertical'
        Button:
        Button:

Button feliratok

Az előző fejezetet folytatva, most adjunk gombjainak, feliratokat.

main.kv
Screen:
    BoxLayout:
        orientation: 'vertical'
        Button:
            text: 'Első'            
        Button:
            text: 'Második'

KV eseménykezelés

Ebben a példában, csak az eseménykezelést fogjuk .kv fájlban végezni.

esemeny.py
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()
teszt.kv
<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'

Doboz a dobozban

komplex.py
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()
teszt.kv
<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:
oktatas/programozas/python/kivy/kv_nyelv.txt · Utolsó módosítás: 2023/08/21 21:14 szerkesztette: admin