#연구/#Kivy

[파이썬/Python] Kivy 디자인 언어를 이용한 Python GUI 프로그래밍 (feat. Kivy Design Language)

every7hing 2020. 6. 26. 21:49
반응형

 

[파이썬/Python] Kivy를 사용해서 Python GUI 프로그래밍을 시작해보자 2

#Kivy Design Language

#.kv 파일

#Builder.load_file

 

Kv Design Language

Kivy는 GUI 프로그래밍을 할 수 있도록 도와준다고 했다.

그렇다면, GUI 요소들을 어떻게 Control할 수 있을까?

 

그래서 Kivy는 Kv Design Language라는 것을 제공하고 있다.

*.kv 확장자를 가지는 파일로 구성되고, 이 언어만의 규칙이 있다.

 

나도 처음 써보는 거라, 규칙같은 거 나도 잘 모른다.

그래서 그냥 무작정 해본다.

 

일단 이전 글에서 간단한 예제를 사용해서 Kivy 앱을 잠깐 만든 것이 있다.

그 예제를 다시 사용한다! 궁금한 분들은 아래 링크를 통해 확인하길 바란다!

 

[파이썬/Python] Kivy를 사용해서 Python GUI 프로그래밍을 시작해보자 1 #Kivy 설치 #Kivy Python #Python GUI Pr

[파이썬/Python] Kivy를 사용해서 Python GUI 프로그래밍을 시작해보자 1 #Kivy 설치 #Kivy Python #Python GUI Programming Kivy는 파이썬을 이용해서 GUI프로그램을 만들 수 있도록 도와줍니다. Linux, Wind..

isss.tistory.com

 

 

 

 

 

 

우선 TestApp Class의 두 줄울 주석처리하고, pass만을 남긴다.

from kivy.app import App
from kivy.uix.button import Button


class TestApp(App):
    pass
    #def build(self):
    #    return Button(text='Hello World')


TestApp().run()

 

그리고 TestApp Class의, App 앞의 글자와 이름은 동일하지만 소문자로 된 test라는 이름으로 .kv 확장자 파일을 동일 폴더에 생성한다.

그리고 아래와 같이 해당 파일의 내용을 작성한다.

test.kv

Label:
    text: 'Hello World'

 

그리고는 다시 Python 파일을 실행해본다.

그러면 아래와 같이 이전에 실행해본 결과와 동일하게 화면 중간에 "Hello World"라는 문자열이 나오는 프로그램이 실행되는 것을 확인 할 수 있다.

Hello World

 

Kv Design Language의 문법은 아직 잘 모르겠으나,

이로써, 디자인적인 부분과 실제 Python 소스코드를 분리하여 작성할 수 있게 된다.

 

위에서 본 것과 같이

kivy의 App을 상속받아 사용하는 Class 이름과 동일하게 작성하면, 자동으로 .kv 파일을 로드하게 됩니다.

하지만, 다른 이름으로 작성하거나, 다른 위치에 작성하고 싶다면 아래와 같이 해주면 됩니다.

from os.path import dirname
from os.path import join
from kivy.app import App
from kivy.lang import Builder


class TestApp(App):
    def build(self):
        return Builder.load_file(join(dirname(__file__), './noname.kv'))


def main():
    TestApp().run()


if __name__ == "__main__":
    main()

 

따라서 앞으로는 이렇게 작성하는 연습을 하면서, Kv Design Language도 익혀보도록 하자.

아래 Document 링크를 통해 익혀볼 수 있으니 참고하길 바란다!

 

Kv language — Kivy 1.11.1 documentation

Concept behind the language As your application grows more complex, it’s common that the construction of widget trees and explicit declaration of bindings becomes verbose and hard to maintain. The KV Language is an attempt to overcome these shortcomings.

kivy.org

 

이런 글은 어때요?

반응형