파이썬 (pythoon)

Python tkinter 제곱근, 로그, sin 각도 공업용 함수 계산기 만들기

working for you 2023. 6. 17. 14:22
반응형

Python Tkinter 라이브러리를 사용하여 과학적 기능을 갖춘 함수(제곱근, 로그, sin 각도) 계산기를 구축하는 방법을 살펴봅니다. 이 글을 마치면 과학적 계산은 물론 기본 산술 연산을 처리할 수 있는 완전한 기능을 갖춘 계산기를 갖게 됩니다. Python tkinter 제곱근, 로그, sin 각도 공업용 함수 계산기 만들기, 시작해볼까요?

 

[목차]
1단계: 필수 모듈 가져오기
2단계: 계산기 클래스 만들기
3단계: 사용자 인터페이스 디자인
4단계: 버튼 클릭 처리
5단계: 계산 구현
6단계: 과학 함수 추가
7단계: 이벤트 루프
결론 및 의견

 

파이썬 tkinter 함수 계산기

 

 

1단계: 필수 모듈 가져오기

시작하려면 계산기를 구축하는 데 필요한 모듈을 가져오겠습니다.

import tkinter as tk
from math import *

 

 

2단계: 계산기 클래스 만들기

다음으로 tkinter.Tk에서 상속받은 Calculator라는 클래스를 정의해 보겠습니다. 이 클래스는 계산기 응용 프로그램의 기본 창 역할을 합니다.

class Calculator(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Scientific Calculator")
        self.geometry("400x500")

        self.create_widgets()

    def create_widgets(self):
        # Widget creation code goes here

 

 

3단계: 사용자 인터페이스 디자인

create_widgets 메서드 내에서 계산기에 필요한 위젯을 추가합니다. tkinter.Entry를 사용하여 입력 및 출력을 표시하고 tkinter.Button을 숫자 및 기능 버튼에 사용합니다.

def create_widgets(self):
    self.input_entry = tk.Entry(self, width=30)
    self.input_entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

    # Numeric buttons
    for i in range(1, 10):
        button = tk.Button(self, text=str(i), command=lambda num=i: self.handle_button_click(str(num)))
        button.grid(row=(9-i)//3+1, column=(i-1)%3, padx=5, pady=5)

    # Functional buttons
    # ...

 

 

4단계: 버튼 클릭 처리

버튼 클릭을 처리하기 위해 handle_button_click이라는 메서드를 구현할 것입니다. 이 메서드는 클릭한 버튼의 값으로 입력 필드를 업데이트합니다.

def handle_button_click(self, value):
    current_input = self.input_entry.get()
    self.input_entry.delete(0, tk.END)
    self.input_entry.insert(tk.END, current_input + value)

 

 

5단계: 계산 구현

제공된 입력을 기반으로 결과를 계산하려면 perform_calculation이라는 메서드를 구현해야 합니다. eval 함수를 사용하여 입력 표현식을 평가하고 입력 필드에 결과를 표시합니다.

def perform_calculation(self):
    try:
        expression = self.input_entry.get()
        result = eval(expression)
        self.input_entry.delete(0, tk.END)
        self.input_entry.insert(tk.END, str(result))
    except:
        self.input_entry.delete(0, tk.END)
        self.input_entry.insert(tk.END, "Error")

 

 

6단계: 과학 함수 추가

제곱근, 로그, 삼각 함수와 같은 과학 함수를 추가하기 위해 별도의 버튼을 만들고 해당 함수에 바인딩합니다.

def create_widgets(self):
    # ...

    square_root_button = tk.Button(self, text="√", command=lambda: self.handle_button_click("sqrt("))
    square_root_button.grid(row=1, column=3, padx=5, pady=5)

    log_button = tk.Button(self, text="log", command=lambda: self.handle_button_click("log("))
    log_button.grid(row=2, column=3, padx=5, pady=5)

    sin_button = tk.Button(self, text="sin", command=lambda: self.handle_button_click("sin("))
    sin_button.grid(row=3, column=3, padx=5, pady=5)

    # ...

 

 

7단계: 이벤트 루프

마지막으로 계산기 응용 프로그램을 시작하기 위해 Calculator 클래스의 인스턴스를 만들고 Tkinter 이벤트 루프를 실행해야 합니다.

if __name__ == "__main__":
    calculator = Calculator()
    calculator.mainloop()

 

 

 

예제 프로그램 코드

이 계산기를 사용하여 기본 산술 계산과 과학 기능을 작게나마 수행할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import tkinter as tk
from math import *
 
class Calculator(tk.Tk):
    def __init__(self):
        super().__init__()
 
        self.title("Scientific Calculator")
        self.geometry("400x500")
 
        self.create_widgets()
 
    def create_widgets(self):
        self.input_entry = tk.Entry(self, width=30)
        self.input_entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
 
        # Numeric buttons
        for i in range(110):
            button = tk.Button(self, text=str(i), command=lambda num=i: self.handle_button_click(str(num)))
            button.grid(row=(9-i)//3+1, column=(i-1)%3, padx=5, pady=5)
 
        # Functional buttons
        square_root_button = tk.Button(self, text="√", command=lambda: self.handle_button_click("sqrt("))
        square_root_button.grid(row=1, column=3, padx=5, pady=5)
 
        log_button = tk.Button(self, text="log", command=lambda: self.handle_button_click("log("))
        log_button.grid(row=2, column=3, padx=5, pady=5)
 
        sin_button = tk.Button(self, text="sin", command=lambda: self.handle_button_click("sin("))
        sin_button.grid(row=3, column=3, padx=5, pady=5)
 
        equal_button = tk.Button(self, text="=", command=self.perform_calculation)
        equal_button.grid(row=4, column=3, padx=5, pady=5)
 
    def handle_button_click(self, value):
        current_input = self.input_entry.get()
        self.input_entry.delete(0, tk.END)
        self.input_entry.insert(tk.END, current_input + value)
 
    def perform_calculation(self):
        try:
            expression = self.input_entry.get()
            result = eval(expression)
            self.input_entry.delete(0, tk.END)
            self.input_entry.insert(tk.END, str(result))
        except:
            self.input_entry.delete(0, tk.END)
            self.input_entry.insert(tk.END, "Error")
 
if __name__ == "__main__":
    calculator = Calculator()
    calculator.mainloop()
 
cs
  1. 상단에 텍스트 입력 필드가 있는 계산기 창이 나타납니다.
  2. 기본적인 산술 계산을 수행하려면 숫자 버튼(1-9)을 클릭하여 원하는 숫자를 입력합니다. 입력은 텍스트 입력 필드에 나타납니다.
  3. 과학적 계산을 수행하기 위해 사용할 수 있는 추가 버튼이 있습니다.
    • 제곱근의 "√": 이 버튼을 클릭한 다음 제곱근을 계산하려는 숫자를 클릭합니다. 예를 들어 16의 제곱근을 계산하려면 "√" 버튼을 클릭한 다음 "1" 버튼을 클릭하고 "6" 버튼을 클릭합니다.
    • 로그의 "로그": 이 버튼을 클릭한 다음 로그를 계산하려는 숫자를 클릭합니다. 예를 들어, 111의 로그를 계산하려면 "log" 버튼을 클릭한 다음 "1" 버튼을 3번클릭 합니다.
    • "sin" for sine: 사인을 계산하려는 숫자 다음에 이 버튼을 클릭합니다. 예를 들어 45도의 사인을 계산하려면 "sin" 버튼을 클릭한 다음 "4" 버튼을 클릭하고 "5" 버튼을 클릭합니다.
  4. 결과를 얻으려면 "=" 버튼을 클릭하십시오. 계산된 결과는 텍스트 입력 필드에 표시됩니다.
  5. 텍스트 입력 필드에 ")" 닫아주지 않으면,  "오류"가 표시됩니다.
  6. 새 식을 입력하거나 이전에 계산한 결과를 추가 계산을 위한 입력으로 사용하여 계산을 계속 수행할 수 있습니다.

 

실행화면

 

 

 

결론 및 의견

Python tkinter 제곱근, 로그, sin 각도 공업용 함수 계산기 만들기 프로그램을 성공적으로 구축했습니다. 사용자 인터페이스를 만들고, 버튼 클릭을 처리하고, 계산을 수행하는 방법을 배웠습니다. 솔직히 이 계산기는 일반적이지 않아서 사용할거 같지는 않습니다. 그냥 공부한다고 생각하고, 만들어보시는걸 추천합니다.

 

 

[관련글]

2023.05.08 - [정보 및 유용한 팁] - 챗GPT 란? (CHAT GPT 사용)

 

챗GPT 란? (CHAT GPT 사용)

챗GPT 란 무엇일까요? 요즘 너무 핫하다 못해 마치 옆에 있는 선생님처럼 느껴지는 이 인공지능 AI에 대해서 이해하기 쉽게 정리하려 합니다. 결론적으로 챗GPT에게 질문을 하면, 형식적인 답이 아

2toy.net

2023.06.15 - [파이썬 (pythoon)] - 파이썬 Tkinter 색상표 프로그램 만들기

 

파이썬 Tkinter 색상표 프로그램 만들기

파이썬 Tkinter 색상표 프로그램 만들기 만드는 방법을 살펴보겠습니다. 그래픽 디자인 도구를 구축하든 단순히 애플리케이션에 색상 선택 기능을 추가하든 관계없이 프로세스를 단계별로 안내

2toy.net

2023.06.15 - [파이썬 (pythoon)] - 파이썬 벽돌깨기 게임 만들기 - python tkinter game

 

파이썬 벽돌깨기 게임 만들기 - python tkinter game

Python을 활용하여 Tkinter의 기능을 최대한 적용 후 몇줄 안되는 코딩으로 파이썬 벽돌깨기 게임 만들기 및 방법을 알아보려 합니다. pygame 라이브러리 없이 Canvas 위젯을 사용해서 생각보다 어렵지

2toy.net

2023.06.11 - [파이썬 (pythoon)] - PyQt QWebEngineView 웹 브라우저 만들기

 

PyQt QWebEngineView 웹 브라우저 만들기

QWebEngineView는 PyQt 활용을 통해 파이썬 언어를 Qt toolkit을 사용할 수 있도록 하는 모듈입니다. Qt toolkit을 사용하면 GUI 애플리케이션을 만들 수 있습니다. 이번에는 PyQt QWebEngineView 웹 브라우저 만들

2toy.net

2023.06.01 - [html 자바스크립트 study] - html은 프로그래밍 언어가 아닙니다 - 오해와 진실

 

html은 프로그래밍 언어가 아닙니다 - 오해와 진실

웹 개발에 관심 있는 많은 사람들이 HTML(HyperText Markup Language)을 프로그래밍 언어로 오해하고 있습니다. 그러나 HTML은 사실 프로그래밍 언어가 아닙니다. 이 글에서는 HTML이 프로그래밍 언어가 아

2toy.net

반응형