본문 바로가기
language/python

[Python] GUI 계산기 만들기

by sseddi 2020. 9. 8.
728x90

Python은 tkinter 모듈을 사용해서 GUI형식으로 프로그램을 만들 수 있다.

그래서 이번에는 GUI 계산기를 만들건데, 비트연산, 진법 변환 및 기본적인 연산도 가능하도록 기능을 넣은 계산기를 만들어보려고 한다.

( //주의 // 아래 내용부터는 구글링해서 찾은 코드를 많이 참고한 내용이다. )

 

먼저 모듈을 임포트 해주고 사용할 변수들을 초기화해준다.

 

title명으로 실행하면 나타나는 창 왼쪽 위의 제목을 변경할 수 있다.

geometry로 창 크기를 조절할 수 있다.

 

숫자를 입력할 창 크기와 위치를 지정해준다.

 

이제 함수 설명을 하려고 한다.

button_pressed 함수

value 매개변수로 가져와서 AC 버튼이 눌렸을 때 숫자 창의 모든 것을 지우고 answer_trigger 변수도 초기화 시킨 후 AC pressed 문구를 출력한다.

 

그외에

answer_trigger 변수가 True이면 초기화 하고 False로 해주고 pressed 문구를 출력시킨다.

 

float_filter함수

예외처리를 위한 함수로 ValueError가 발생시 float로 반환해주는 함수이다.

 

int_changer 함수

사용자가 계산하고 싶은 숫자를 입력하면 계산할 두 숫자를 비교해서 같으면 int로 반환하고 다르면 float로 반환시키는 함수이다. 두 숫자가 같으면 정수로 표현가능하기 때문에 따로 int형으로 반환시키는 것이다.

 

math_button_pressed 함수

이 함수는 일반적인 사칙연산과 비트 연산을 할 때 사용하는 함수이다.

temp_number 변수를 사용해 사용자가 입력할 두 숫자 중에 먼저 입력한 숫자를 저장한다.

 

system_button_pressed 함수

이 함수는 진법 변환 기능에서 사용할 함수이다. 

진법 변환 시에는 사용자가 하나의 숫자만 입력해서 숫자 입력 칸을 비울 필요가 없어 따로 작성했다.

 

equal_button_pressed 함수

 

계산기 버튼 중 '=' 버튼이 눌렀을 때 사용하는 함수이다.

사칙연산과 비트 연산자가 눌렀을 경우에는 사용자가 숫자를 두 번 입력하기 때문에 print부분에서 number을 출력해주는데, 진법 변환에서는 숫자가 한번만 나타나면 되므로 number을 print해주지 않았다.

각 연산에 맞게 solution 변수에 계산 식을 써넣었는데, 진법 변환시 숫자 앞에 알파벳으로 어떤 진법인지 나타내기 때문에 다른 연산들과 달리 int_changer 함수를 삭제해주었다.

 

버튼들은 다음과 같이 나타내주었다.

lambda : 를 사용해서 각 버튼에 맞는 함수를 지정해주었다.

 

실행화면

 

 

참고)

opentutorials.org/module/2980/17973 

appia.tistory.com/95

 

728x90

댓글