본문 바로가기

코딩/파이썬 kivy

[kivy-003] Hello World

간단한 애플리케이션 만들어 보기 1

 

본 글 및 이후 글을 통해 kivy 홈페이지의 'Getting Started'를 따라해 본 결과를 적어보고자 합니다.

 

kivy를 이해하기 위한 첫번째 애플리케이션은 Pong Game 튜토리얼입니다.

Pong Game 코드를 무작정 따라해 본 바, 감은 오는데 왠지 기초가 많이 부족하다 싶어 'Create an application'으로 먼저 시작합니다.

 

화면에 표시되는 위 이미지에 대한 kivy 코드는 다음과 같습니다. tkinter와는 달리 실행된 애플리케이션이 화면 중앙에 위치해서 좋네요.

 

from kivy.app import App
from kivy.uix.label import Label


class MyApp(App):

    def build(self):
        return Label(text='Hello World')


if __name__ == '__main__':
    MyApp().run()

 

App 클래스가 제공하는 run() 메서드로 kivy 애플리케이션을 실행합니다.

 

MyApp 클래스에서 override하는 App 클래스의 build() 메서드에 대한 설명이 아래와 같은데, 그냥 쉽게 kivy 애플리케이션은 build 메서드로 넘겨받은 위젯을 화면에 표시한다 정도로 이해합니다.

 

Initializes the application; it will be called only once.
If this method returns a widget (tree),
it will be used as the root widget and added to the window.

간단한 애플리케이션 만들어 보기 2

예제 코드가 하나 더 있어 작성해 보니 별 이상 없이 실행됩니다.

 

 

화면에 표시되는 위 이미지에 대한 kivy 코드는 아래와 같은데, 몇 자 주석을 달았고 마지막 TextInput 위젯의 multiline 옵션 값을 False -> True 바꾸니 줄바꿈이 되네요.

 

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput


class LoginScreen(GridLayout):

    def __init__(self, **kwargs):
        # super(LoginScreen, self).__init__(**kwargs)
        GridLayout.__init__(self, **kwargs)

        # GrideLayer의 열 수
        self.cols = 2

        # Label 1
        self.add_widget(Label(text='User Name'))

        # TextInput 1
        self.username = TextInput(multiline=False)
        self.add_widget(self.username)

        # Label 2
        self.add_widget(Label(text='Password'))

        # TextInput 2 
        # password -> True, multiline -> True
        self.password = TextInput(password=True, multiline=True)
        self.add_widget(self.password)


class MyApp(App):

    def build(self):
        return LoginScreen()


if __name__ == '__main__':
    MyApp().run()

 

GrideLayer에 표시되는 위젯의 순서가 .add_widget() 메서드 호출 순서에 따라 왼쪽 -> 오른쪽, 위 -> 아래로 표시될 것 같아 아래와 같이 Label 2번과 TextInput 1번 위젯에 대한 코드 순서를 바꾸니 화면에 표시되는 위젯 위치도 당연히 변경됩니다.

 

        # Label 2
        self.add_widget(Label(text='Password'))

        # TextInput 1
        self.username = TextInput(multiline=False)
        self.add_widget(self.username)

 

 

'코딩 > 파이썬 kivy' 카테고리의 다른 글

[kivy-006] Pong Game 튜토리얼  (0) 2021.07.06
[kivy-005] kivy 2.0.0 개발 환경 셋업  (0) 2020.12.11
[kivy-004] kivy 아키텍처  (0) 2020.11.14
[kivy-002] kivy 1.11.1 개발 환경 셋업  (0) 2020.11.07
[kivy-001] 시작하기  (0) 2020.11.07