kv code를 python 코드에 포함(load)시키는 방법에는 2가지 방법이 있다.
1. by name convention(이름으로 지정하는 방법)
python의 클래스 이름과 동일한 kv 파일명을 가진 kv 파일을 만들면 자동으로 이 파일을 load한다.
2. Builder 클래스를 이용하여 직접 python 코드에 load하는 방법
-. Builder.load_file('some/path/somefile.kv')
-. Builder.load_string(my_kv_string)
이 경우는 python 코드 안에서 string 형태로 kv 코드를 만들고 이를 Build.load_string()을 이용해서 사용하는 방석이다.
아래의 코드는 by name convention 방식으로 kv 코드를 python 코드에 load하는 방법이다.
- exkvtest.kv의 내용이다
<Label>
text: 'Hello'+' World'
font_size: 50
- exkvtest.py의 내용이다.
#-*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.label import Label
'''
kv의 원리
-. kv 파일명과 python 파일명이 같아야 함. 단 모두 소문자라야 함. ExKvTest.kv, ExKvTest.py식이면 안됨.
-. exkvtest.kv, exkvtest.py식이어야 한다
-. python 소스 코드의 클래스 이름도 kv 파일과 동일해야 한다. 단 소스 코드에서의 class 이름은 소문자로만 하지
-. 않아도 된다. class ExKvTest(App)과 같이 해도 된다. 또한 소스 코드상에서의 class이름 끝에 App이라는 문자는 상관없다.
There are two ways to load Kv code into your application:
By name convention:
Kivy looks for a Kv file with the same name as your App class in lowercase, minus “App” if it ends with ‘App’ e.g:
MyApp -> my.kv
'''
# 안됨
# class MyKvTest(App):
# def build(self):
# # return Label(text='Hi~')
# return Label()
# 잘 됨
class ExKvTestApp(App):
def build(self):
# return Label(text='Hi~')
return Label()
if __name__ == '__main__':
# MyKvTest().run() # 안됨
ExKvTestApp().run() # 잘됨
댓글 없음:
댓글 쓰기