Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Kivy로 버튼 만들기 – 기본 개념부터 이벤트 처리까지


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()를 통해 다양한 위젯에 이벤트 핸들러를 유연하게 연결할 수 있습니다.