Akashic Records

Flet 계산기 본문

Python for Beginners

Flet 계산기

Andrew's Akashic Records 2024. 10. 28. 14:55
728x90

주요 기능 및 사용 방법

  • 사용자는 텍스트 필드에 계산하고 싶은 수식을 입력합니다.
  • 사칙연산 버튼을 클릭하면 입력 필드에 해당 연산자가 추가됩니다.
  • "계산하기" 버튼을 클릭하면 입력된 수식이 계산되어 결과가 화면 하단에 표시됩니다.
  • 이 계산기는 eval 함수를 사용하여 입력된 수식을 평가하므로, 사용자가 잘못된 수식을 입력할 경우 오류 메시지가 표시됩니다.

 

import flet as ft

def main(page: ft.Page):
    page.title="Flet 계산기"
    page.theme_mode = ft.ThemeMode.LIGHT

    # 결과를 표시하는 텍스트 위젯
    result_text = ft.Text(value="", size=20)

    # 첫번째 텍스트 필드 (사용자가 수식을 입력하는 곳)
    input_field = ft.TextField(label="수식을 입력하세요", multiline=False)

    # 사칙연산을 텍스트 필드에 추가하는 함수
    def add_operator(e):
        operator = e.control.text
        input_field.value += operator
        input_field.update()

    # 계산하기 버튼을 클릭했을 때 동작
    def calculate(e):
        try:
            # 입력된 수식을 안전하게 평가하기 위해 eval 사용
            expression = input_field.value
            result = eval(expression)
            result_text.value = f"결과: {result}"
        except Exception as ex:
            result_text.value = f"오류: {str(ex)}"
        result_text.update()

    # 사칙연산 버튼 생성 및 이벤트 핸들러 연결
    operators = ["+", "-", "*", "/"]
    operator_buttons = [
        ft.ElevatedButton(text=op, on_click=add_operator) for op in operators
    ]

    # 계산하기 버튼 생성 및 이벤트 핸들러 연결
    calculate_button = ft.ElevatedButton(text="계산하기", on_click=calculate)

    # 페이지에 컴포넌트 추가
    page.add(input_field)
    page.add(ft.Row(operator_buttons))
    page.add(calculate_button)
    page.add(result_text)

ft.app(target=main)
728x90

코드 설명

필요한 모듈 임포트

import flet as ft
  • flet: GUI 애플리케이션을 구축하기 위해 사용하는 Flet 라이브러리입니다.

main 함수 정의

def main(page: ft.Page):
  • Flet 애플리케이션의 진입점이며, 페이지 컴포넌트(page)를 정의합니다.

결과를 표시하는 텍스트 위젯

result_text = ft.Text(value="", size=20)
  • 계산 결과를 화면에 표시하기 위한 텍스트 위젯입니다.
  • 초기값은 빈 문자열로 설정되어 있으며, 글자 크기는 20입니다.

입력 필드 생성

input_field = ft.TextField(label="수식을 입력하세요", multiline=False)
  • 사용자가 수식을 입력하는 텍스트 필드입니다.
  • label은 "수식을 입력하세요"이며, multiline=False로 설정되어 있어 한 줄로 입력할 수 있습니다.

사칙연산을 추가하는 함수

def add_operator(e):
   operator = e.control.text
   input_field.value += operator
   input_field.update()
  • 사칙연산 버튼을 클릭했을 때 해당 연산자를 input_field에 추가하는 함수입니다.
  • operator는 클릭된 버튼의 텍스트(e.control.text)를 가져와 입력 필드(input_field.value)에 덧붙입니다.
  • 그런 다음, input_field.update()를 호출하여 UI를 업데이트합니다.

계산을 수행하는 함수

def calculate(e):
   try:
       expression = input_field.value
       result = eval(expression)
       result_text.value = f"결과: {result}"
   except Exception as ex:
       result_text.value = f"오류: {str(ex)}"
   result_text.update()
  • "계산하기" 버튼을 클릭했을 때 호출되는 함수입니다.
  • 사용자가 입력한 수식을 eval 함수로 평가하여 결과를 계산합니다.
  • 만약 계산 중 오류가 발생하면 예외 처리를 통해 오류 메시지를 출력합니다.
  • 최종 결과는 result_text.value에 할당하여 화면에 출력되며, result_text.update()로 UI를 업데이트합니다.

사칙연산 버튼 생성

operators = ["+", "-", "*", "/"]
operator_buttons = [
   ft.ElevatedButton(text=op, on_click=add_operator) for op in operators
]
  • 사칙연산에 사용될 네 개의 연산자 버튼을 만듭니다.
  • 각 버튼이 클릭되면 add_operator 함수가 호출됩니다.

계산하기 버튼 생성

calculate_button = ft.ElevatedButton(text="계산하기", on_click=calculate)
  • 수식을 평가하여 계산 결과를 출력하기 위한 버튼입니다.
  • 버튼이 클릭되면 calculate 함수가 호출됩니다.

페이지에 컴포넌트 추가

page.add(input_field)
page.add(ft.Row(operator_buttons))
page.add(calculate_button)
page.add(result_text)
  • 페이지에 각 컴포넌트를 추가합니다.
  • 입력 필드, 사칙연산 버튼들, "계산하기" 버튼, 그리고 결과 텍스트를 순서대로 추가합니다.
  • ft.Row(operator_buttons)를 사용하여 연산자 버튼들을 한 줄에 배치합니다.

애플리케이션 실행

ft.app(target=main)
  • main 함수를 진입점으로 하여 Flet 애플리케이션을 실행합니다.

Felt 계산기 실행 모습

728x90

'Python for Beginners' 카테고리의 다른 글

Flet Mobile App Layout  (3) 2024.10.29
Flet 타이머  (0) 2024.10.28
Flet Button와 Event  (0) 2024.10.25
Flet의 기본 구조 와 개발 가이드  (0) 2024.10.24
Python with Flet - 설치  (1) 2024.10.23
Comments