Kivy는 플랫폼에 독립적인 파이썬 GUI 도구입니다. Android, iOS, Linux, Windows 등 다양한 환경에서 실행할 수 있으며, 한 번 작성한 코드를 여러 플랫폼에서 그대로 구동할 수 있다는 점이 가장 큰 장점입니다. 주로 안드로이드 애플리케이션 개발에 활용되지만, 데스크톱 애플리케이션 개발에도 충분히 사용할 수 있습니다.
버튼(Button)은 라벨(Label)에 특정 동작을 연결해 놓은 위젯으로, 버튼을 누르거나 클릭·터치 후 손을 뗐을 때 지정된 동작이 트리거됩니다. 버튼에 함수를 연결하여 원하는 로직을 실행할 수 있으며, 색상, 크기, 폰트 등 다양한 방식으로 스타일링도 가능합니다.
예제 코드
# kivy 모듈 임포트
import kivy
# kivy 버전 제한 - 이 버전 미만에서는 앱이나 소프트웨어를 사용할 수 없음
kivy.require("1.9.1")
# 앱의 기본 클래스는 App 클래스를 상속받습니다.
# app: 항상 애플리케이션의 인스턴스를 참조합니다.
from kivy.app import App
# kivy에서 버튼 생성 - 임포트하지 않으면 오류가 발생함
from kivy.uix.button import Button
# 버튼을 생성하는 클래스
class ButtonApp(App):
def build(self):
# (r, g, b, a) 튜플 형식으로 색상 지정
btn = Button(text ="Push Me !",
font_size ="20sp",
background_color =(1, 1, 1, 1),
color =(1, 1, 1, 1),
size =(32, 32),
size_hint =(.2, .2),
pos =(300, 250))
# bind()를 사용해 버튼과 함수 콜백을 연결
btn.bind(on_press = self.callback)
return btn
# 콜백 함수는 버튼이 눌렸을 때 호출됨
def callback(self, event):
print("button pressed")
print('Kivy!')
# ButtonApp() 클래스의 루트 객체 생성
root = ButtonApp()
# run() 메서드가 전체 프로그램을 실행하며,
# 생성자에 전달된 대상 함수를 호출합니다.
root.run()
주요 속성 살펴보기
예제 코드에서 사용된 버튼 속성은 다음과 같습니다.
- text: 버튼에 표시될 문자열입니다.
- font_size: 글자 크기를 지정하며, 화면 크기에 따라 조정되는 단위(sp)를 사용합니다.
- background_color: 버튼 배경색을 RGBA(빨강, 초록, 파랑, 알파) 값으로 지정합니다.
- color: 버튼 텍스트의 색상을 RGBA 값으로 지정합니다.
- size / size_hint: 버튼의 고정 크기 또는 부모 레이아웃 대비 상대적 비율을 설정합니다.
- pos: 화면상에서 버튼의 위치(x, y 좌표)를 지정합니다.
bind(on_press=self.callback) 구문은 버튼과 콜백 함수를 연결하는 핵심 부분입니다. 버튼이 눌리면 등록된 callback 메서드가 자동으로 호출되어 원하는 동작을 수행하게 됩니다. 이처럼 Kivy에서는 bind()를 통해 다양한 위젯에 이벤트 핸들러를 유연하게 연결할 수 있습니다.