본문 바로가기
파이썬/Kivy_파이썬으로 앱만들기

Python만으로 어플을 만들어보자 (create an application)

by David.Ho 2023. 1. 20.
728x90
반응형

kivy 실행해보기

 

kivy도 설치했으니 이제 kivy공식문서를 따라 어플리케이션 개발을 진행해보고자 합니다.

 

kivy에서는 kivy를 익히기 위한 튜토리얼로 단순한 형태의 핑퐁게임개발을 제공하고 있습니다.

초창기 컴퓨터에 들어가는 게임처럼 생겼군요

그런데 시작 하기 전에 먼저 Create an application 을 보고 오라고 하는군요! 그럼 보고옵시다.

 

 

Create an application

여기서는 더욱 간단한 형태의 어플리케이션 구동을 설명하고 있습니다.

우선 가이드의 코드를 그대로 따라해 보겠습니다.

 

kivy_venv를 생성했던 디렉토리에 main.py 파일을 생성한 뒤,

공식문서에 있는 코드를 그대로 복사해 넣어보겠습니다.

import kivy
kivy.require('2.1.0') # replace with your current kivy version !

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()

그리고 이 파일을 돌려보겠습니다.

python main.py

많은 수의 log가 print된 뒤, "Hello world"를 출력하는 간단한 어플리케이션이 구동되었습니다!

코드도 간단해서 쉽게 이해하실 수 있으셨으리라 생각합니다.

 

1. 필요한 패키지, 클래스를 import 해줍니다.

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

 

2. 메인 기능을 구현할 어플리케이션을 class로 정의합니다.

App 클래스를 상속했습니다.

그리고 MyApp 클래스 안에 build() 메소드를 통해 Label 위젯 인스턴스를 return했습니다.

Label 위젯은 속성으로 text='Hello world' 를 가졌고, 이 부분이 화면으로 나타나는 부분입니다.

class MyApp(App):

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

 

3. 마지막으로 main.py가 구동되면 MyApp이 실행될 수 있도록 해줍니다.

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

 

Customize the application

이제는 문서를 따라서 아주 조금만 더 복잡한 어플리케이션을 구현해봅시다.

 

main.py의 내용을 아래의 코드로 바꿔서 실행해보겠습니다.

# import
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)

        # 칼럼(열)이 2개임을 정의
        self.cols = 2

        # (1,1 = 1행 1열)
        self.add_widget(Label(text='User Name'))
        # (1,2)
        self.username = TextInput(multiline=False)
        self.add_widget(self.username)

        # (2,1)
        self.add_widget(Label(text='password'))
        # (2,2)
        self.password = TextInput(password=True, multiline=False)
        self.add_widget(self.password)


class MyApp(App):

    def build(self):
        return LoginScreen()


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

원래는 MyApp() 클래스 안의 build() 함수가 Label() 을 return하고 있었지만,

이제는 우리가 정의한 LoginScreen()클래스를 return하고 있습니다.

 

그리고 LoginScreen()에서는 GridLayout을 상속받아 활용하고 있습니다.

self.add_widget()

을 활용해 그리드에 위젯을 차곡차곡 쌓아가고 있습니다.

 

 

 main.py를 실행시키면 이런 어플리케이션이 나타납니다.

 

728x90
반응형

댓글