Python Tkinter 라이브러리를 사용하여 과학적 기능을 갖춘 함수(제곱근, 로그, sin 각도) 계산기를 구축하는 방법을 살펴봅니다. 이 글을 마치면 과학적 계산은 물론 기본 산술 연산을 처리할 수 있는 완전한 기능을 갖춘 계산기를 갖게 됩니다. Python tkinter 제곱근, 로그, sin 각도 공업용 함수 계산기 만들기, 시작해볼까요?
[목차]
1단계: 필수 모듈 가져오기
2단계: 계산기 클래스 만들기
3단계: 사용자 인터페이스 디자인
4단계: 버튼 클릭 처리
5단계: 계산 구현
6단계: 과학 함수 추가
7단계: 이벤트 루프
결론 및 의견
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(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
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-9)을 클릭하여 원하는 숫자를 입력합니다. 입력은 텍스트 입력 필드에 나타납니다.
- 과학적 계산을 수행하기 위해 사용할 수 있는 추가 버튼이 있습니다.
- 제곱근의 "√": 이 버튼을 클릭한 다음 제곱근을 계산하려는 숫자를 클릭합니다. 예를 들어 16의 제곱근을 계산하려면 "√" 버튼을 클릭한 다음 "1" 버튼을 클릭하고 "6" 버튼을 클릭합니다.
- 로그의 "로그": 이 버튼을 클릭한 다음 로그를 계산하려는 숫자를 클릭합니다. 예를 들어, 111의 로그를 계산하려면 "log" 버튼을 클릭한 다음 "1" 버튼을 3번클릭 합니다.
- "sin" for sine: 사인을 계산하려는 숫자 다음에 이 버튼을 클릭합니다. 예를 들어 45도의 사인을 계산하려면 "sin" 버튼을 클릭한 다음 "4" 버튼을 클릭하고 "5" 버튼을 클릭합니다.
- 결과를 얻으려면 "=" 버튼을 클릭하십시오. 계산된 결과는 텍스트 입력 필드에 표시됩니다.
- 텍스트 입력 필드에 ")" 닫아주지 않으면, "오류"가 표시됩니다.
- 새 식을 입력하거나 이전에 계산한 결과를 추가 계산을 위한 입력으로 사용하여 계산을 계속 수행할 수 있습니다.
실행화면
결론 및 의견
Python tkinter 제곱근, 로그, sin 각도 공업용 함수 계산기 만들기 프로그램을 성공적으로 구축했습니다. 사용자 인터페이스를 만들고, 버튼 클릭을 처리하고, 계산을 수행하는 방법을 배웠습니다. 솔직히 이 계산기는 일반적이지 않아서 사용할거 같지는 않습니다. 그냥 공부한다고 생각하고, 만들어보시는걸 추천합니다.
[관련글]
2023.05.08 - [정보 및 유용한 팁] - 챗GPT 란? (CHAT GPT 사용)
2023.06.15 - [파이썬 (pythoon)] - 파이썬 Tkinter 색상표 프로그램 만들기
2023.06.15 - [파이썬 (pythoon)] - 파이썬 벽돌깨기 게임 만들기 - python tkinter game
2023.06.11 - [파이썬 (pythoon)] - PyQt QWebEngineView 웹 브라우저 만들기
2023.06.01 - [html 자바스크립트 study] - html은 프로그래밍 언어가 아닙니다 - 오해와 진실
'파이썬 (pythoon)' 카테고리의 다른 글
Python Tkinter 스톱워치 응용 프로그램 구축 (0) | 2023.06.17 |
---|---|
파이썬 Tkinter 이미지 뷰어 프로그램 만들기 (0) | 2023.06.17 |
Python Tkinter 파일 탐색기(FileDialog) 만들기 방법 (0) | 2023.06.17 |
Python Tkinter 애니메이션, canvas, update() (0) | 2023.06.17 |
Python Tkinter에서 시작 화면 만들기 (0) | 2023.06.16 |