Python 멀티 플랫폼을 지원하는 GUI 툴킷 Toga 라이브러리 알아보기
오늘은 Python으로 대부분 운영체제에서 GUI를 구현할 수 있는 툴킷 라이브러리인 Toga를 적용해보려 합니다.
Toga 설치
우선 virtualenv로 파이썬 환경을 분리해줍니다.
pip3 install virtualenv
virtualenv -mvenv env
env라는 이름의 가상 환경을 생성합니다.
source env/bin/activate
가상환경을 폴더에서 활성화합니다.
pip3 install --upgrade pip
pip의 업그레이드가 존재하는지 확인하고 진행합니다.
pip install --pre toga
pip로 Toga를 설치합니다.
hello world
버튼을 누르면 hello world가 콘솔로 출력되는 예제입니다.
import toga
toga를 가져옵니다.
def handler(widget):
print("hello")
콘솔에 hello가 출력되는 함수를 작성합니다.
def build(app):
box = toga.Box()
button = toga.Button('Hello world', on_press= handler)
box.add(button)
return box
박스와 버튼 객체를 만들고, 버튼이 눌리면 콘솔에 hello가 출력되는 함수를 수행하게 합니다.
해당 박스 객체에 버튼을 추가합니다.
def main():
return toga.App(name='First App', app_id='io.github.minwook-shin.helloworld', startup=build)
앱의 이름과 아이디를 정합니다.
if __name__ == '__main__':
main().main_loop()
응용 프로그램을 호출하는 루프를 실행합니다.
input
import toga
from toga.style.pack import *
toga를 가져옵니다.
def build(app):
def calculate(widget):
try:
result_form.value = int(input_form.value) * int(input_form.value)
except ValueError:
result_form.value = 'ValueError'
위젯의 값을 불러와서 계산하는 함수를 만듭니다.
box = toga.Box()
input_box = toga.Box()
box.add(input_box)
input_form = toga.TextInput()
input_form.style.update(flex=1)
input_box.add(input_form)
input_box.style.update(direction=ROW)
result_box = toga.Box()
box.add(result_box)
result_form = toga.TextInput(readonly=True)
result_box.add(result_form)
result_box.style.update(direction=ROW)
result_form.style.update(flex=1)
button = toga.Button('confirm', on_press=calculate)
button.style.update(flex=1)
box.add(button)
box.style.update(direction=COLUMN)
return box
박스를 만들고 입력을 받는 폼 박스, 받은 입력을 계산해서 보여주기만 하는 폼 박스도 만들어줍니다.
버튼을 누르면 위젯의 값을 불러와서 계산하는 함수가 수행됩니다.
def main():
return toga.App(name='Converter', app_id='io.github.minwook-shin.Converter', startup=build)
앱의 이름과 아이디를 정합니다.
if __name__ == '__main__':
main().main_loop()
응용 프로그램을 호출하는 루프를 실행합니다.
Written on May 17, 2019