tkinter를 이용한 계산기 구현

Similar documents
세계 비지니스 정보


CONTENTS.HWP

INDUS-8.HWP


00-1표지

경제통상 내지.PS

°æÁ¦Åë»ó³»Áö.PDF

우루과이 내지-1

영암군 관광종합개발계획 제6장 관광(단)지 개발계획 제7장 관광브랜드 강화사업 1. 월출산 기( 氣 )체험촌 조성사업 167 (바둑테마파크 기본 계획 변경) 2. 성기동 관광지 명소화 사업 마한문화공원 명소화 사업 기찬랜드 명소화 사업 240

[96_RE11]LMOs(......).HWP


À̶õ°³È²³»Áö.PDF

통신1310_01-도비라및목차1~9

*통신1802_01-도비라및목차1~11


확률 및 분포

표1

<C1A4C3A5BFACB1B D3420C1A4BDC5C1FAC8AFC0DAC0C720C6EDB0DFC7D8BCD220B9D720C0CEBDC4B0B3BCB1C0BB20C0A7C7D120B4EBBBF3BAB020C0CEB1C720B1B3C0B020C7C1B7CEB1D7B7A520B0B3B9DF20BAB8B0EDBCAD28C7A5C1F6C0AF292E687770>

°æÁ¦Àü¸Á-µ¼º¸.PDF

israel-내지-1-4

09 강제근로의 금지 폭행의 금지 공민권 행사의 보장 중간착취의 금지 41 - 대판 , 2006도7660 [근로기준법위반] (쌍용자동차 취업알선 사례) 11 균등대우의 원칙 43 - 대판 , 2002도3883 [남녀고용평등법위

기술통계

*통신1604_01-도비라및목차1~12

*통신1510_01-도비라및목차1~12

미얀-내지-8차

쉽게 풀어쓴 C 프로그래밍

<4D F736F F D20B4EBBFF BFB5BEF7BAB8B0EDBCAD2E646F63>


세계 비지니스 정보

PowerPoint Template

2 ㆍ 大 韓 政 治 學 會 報 ( 第 20輯 1 號 ) 도에서는 고려 말에 주자학을 받아들인 사대부들을 중심으로 보급되기 시작하였고, 이후 조선시대에 들어와서는 국가적인 정책을 통해 민간에까지 보급되면서 주자 성리학의 심 화에 커다란 역할을 담당하였다. 1) 조선시대

데이터 시각화

볼리비아-내지-01-1

제 출 문 환경부장관 귀하 본 보고서를 폐기물관리 규제개선 방안연구 에 관한 최종보고서로 제출합니다 연구기관 한국산업폐기물처리공제조합 연구책임자 연 구 원 연구보조원 이 남 웅 황 연 석 은 정 환 백 인 근 성 낙 근 오 형 조 부이사장 상근이사 기술팀장 법률팀장 기

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770>

< BACFC7D1B1B3C0B0C1A4C3A5B5BFC7E228B1E2BCFABAB8B0ED D D20C6EDC1FD2035B1B32E687770>

단순 베이즈 분류기

8장 문자열

제 출 문 국민대통합위원회 위원장 귀하 이 보고서를 연구용역사업 공공갈등의 정치화 경로분석 및 대응방안 연구 과제의 최종보고서로 제출합니다. 2014년 12월 단국대학교 산학협력단장 박 성 완 II

untitled

한눈에-아세안 내지-1


COVER.HWP

이슈분석 2000 Vol.1

가볍게읽는-내지-1-2

kbs_thesis.hwp


17장 클래스와 메소드



*통신1704_01-도비라및목차1~11

3장 함수


<C7D0B1B3C7F5BDC520BBE7B7CAB9DFB1BCB0FA20C8AEBBEAC0BB20C0A7C7D120B3D7C6AEBFF720B1B8C3E0B9E6BEC8BFACB1B D30362C20C0CEBCE2BABB292E687770>

*통신1711_01-도비라및목차1~9

슬라이드 1

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

14장 파일

슬라이드 1

untitled

< C1D6BFE4C5EBB0E820B9D720C0DAB7E120C3D6C1BE2E687770>

< B3E220B3EBBCF7C0CE20B5EEC0C720BAB9C1F6BBE7BEF720BEC8B3BB28C3D6C1BE292E687770>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - gnu-w06-python_[실습]_day13-turtle-shape

4장기본프로그래밍2

UI TASK & KEY EVENT

윈도우즈프로그래밍(1)

Microsoft PowerPoint - [2009] 02.pptx

<C0CEC5CDB3DDC1DFB5B6BDC7C5C2C1B6BBE75FC0CEBCE2C5EBC7D5BABB5F E687770>


*통신1510_01-도비라및목차1~11

SIGPLwinterschool2012

<BCADBFEFBDC3BFA9BCBAB0A1C1B7C0E7B4DC5FBCADBFEFBDC320B0F8B5BFC0B0BEC6C1F6BFF8BBE7BEF7C0C720C1F6BCD3B0A1B4C9BCBA20B9E6BEC8BFACB1B828BCF6C1A E687770>

< FC0E5BCBCBFB52E687770>

<28C3D6C1BEC0CEBCE2BFEB29BCADBFEFBDC3B0F8B0F8C5F5C0DABBE7BEF7B0FCB8AEC7D5B8AEC8ADB9E6BEC82E687770>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

인니 내지-00-5

untitled

LIDAR와 영상 Data Fusion에 의한 건물 자동추출

< DC1A4BAB8C8AD20BBE7C8B8BFA1BCADC0C720C0CEB1C728C3D6C1BE292E687770>

Quark License Administrator 4.0 사용 안내서

게임 기획서 표준양식 연구보고서

지급14 01-도비라및목차1~10

제 출 문 중소기업청장 귀하 본 보고서를 중소기업 원부자재 구매패턴 조사를 통한 구매방식 개선 방안 연구 의 최종보고서로 제출합니다 한국산업기술대학교 산학협력단 단 장 최 정 훈 연구책임자 : 이재광 (한국산업기술대학교 부교수) 공동연구자 : 노성호

중간고사

»õ·Î ¸¸µé±â+.PDF

<BAB8C5EBB1B3BACEBCBC20BBEAC1A4B9E6BDC4BFA120B0FCC7D120BFACB1B82E687770>

K&R2 Reference Manual 번역본

노무관리업무 담당자 워크숍 속표지


언리얼엔진4_내지_ indd

목 차 Ⅰ. 조사개요 1 Ⅱ. 용어해설 13 Ⅲ. 조사결과 과학기술인력 양성 및 활용에 관한 거시통계 분석 결과 9 1 가. 과학기술인의 양성 현황 19 나. 과학기술인의 취업 현황 24 다. 과학기술인의 경제활동 현황 27 라. 과학기술인의 고용 현황 28

untitled

Javascript

장애인통계-0110-최종.hwp


Microsoft PowerPoint - hw8.ppt [호환 모드]

슬라이드 1

Transcription:

tkinter 를이용한계산기구현 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 1 / 26

학습내용 그림판계산기설계연산가능한계산기 To do 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 2 / 26

그림판 I 크기 600 400 인캔버스에서화살표를이용하여녹색선으로스케치하며 u 키로화면지움 from tkinter import * ##### 변수설정 # 캔버스의높이, 폭, 배경색지정 canvas_height = 400 canvas_width = 600 canvas_colour = "black" # 선의 x,y 좌표, 색상, 폭, 길이지정 p1_x=canvas_width/2 p1_y=canvas_height p1_colour="green" line_width=5 line_length=5 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 3 / 26

그림판 II ##### Functions: # 사용자콘트롤 : 화살표를이용한이동, 지우기 def p1_move_n(event): global p1_y canvas.create_line(p1_x, p1_y, p1_x, (p1_y-line_length), width=line_width, fill=p1_colour) p1_y = p1_y - line_length def p1_move_s(event): global p1_y canvas.create_line(p1_x, p1_y, p1_x, p1_y+line_length, width=line_width, fill=p1_colour) p1_y = p1_y + line_length 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 4 / 26

그림판 III def p1_move_e(event): global p1_x canvas.create_line(p1_x, p1_y, p1_x + line_length, p1_y, width=line_width, fill=p1_colour) p1_x = p1_x + line_length def p1_move_w(event): global p1_x canvas.create_line(p1_x, p1_y, p1_x - line_length, p1_y, width=line_width, fill=p1_colour) p1_x = p1_x - line_length def erase_all(event): canvas.delete(all) 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 5 / 26

그림판 IV ##### 메인 : 윈도우뛰우기 window = Tk() window.title("myetchasketch") canvas = Canvas(bg=canvas_colour, height=canvas_height, width=canvas_width, highlightthickness=0) canvas.pack() # windows.bind를이용한키를눌렀을때움직임지정 : window.bind("<up>", p1_move_n) window.bind("<down>", p1_move_s) window.bind("<left>", p1_move_w) window.bind("<right>", p1_move_e) window.bind("u", erase_all) window.mainloop() 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 6 / 26

그림판 V 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 7 / 26

계산기설계 I 화면에숫자버튼 1 생성 from tkinter import * from decimal import * ##### 메인 : window = Tk() window.title("mycalculator") # 내용수정이가능한엔트리위젯을사용해결과디스플레이사용 display = Entry(window, width=45, bg="light green") display.grid() # 숫자버튼생성 : def click1(): display.insert(end, "1") 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 8 / 26

계산기설계 II Button(window, text="1", width=5, command=click1).grid(row=1,column=0) ##### 메인반복문실행 window.mainloop() 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 9 / 26

계산기설계 III for문을이용하여버튼생성 from tkinter import * from decimal import * # 키입력함수 : def click(key): display.insert(end, key) ##### 메인 : window = Tk() window.title("mycalculator") # top_row 프레임생성 top_row = Frame(window) top_row.grid(row=0, column=0, columnspan=2, sticky=n) 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 10 / 26

계산기설계 IV # 수정가능한엔트리위젯 display = Entry(top_row, width=45, bg="light green") display.grid() # 숫자버튼프레임생성 num_pad = Frame(window) num_pad.grid(row=1, column=0, sticky=w) # 숫자버튼에제공될숫자 : num_pad_list = [ 7, 8, 9, 4, 5, 6, 1, 2, 3, 0,., = ] 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 11 / 26

계산기설계 V # 반복문으로숫자버튼생성 r = 0 # 행카운터 c = 0 # 열카운터 for btn_text in num_pad_list: Button(num_pad, text=btn_text, width=5, command=click).grid(row=r, column=c) c = c+1 if c > 2: c = 0 r = r+1 ##### 메인반복문실행 window.mainloop() 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 12 / 26

계산기설계 VI 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 13 / 26

계산기설계 VII 앞의코드에연산자버튼추가 # 연산자프레임생성 operator = Frame(window) operator.grid(row=1, column=1, sticky=e) operator_list = [ *, /, +, -, (, ), C ] # 반복문으로연산자버튼생성 r = 0 c = 0 for btn_text in operator_list: Button(operator, text=btn_text, width=5, command=click).grid(row=r, 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 14 / 26

계산기설계 VIII column=c) c = c+1 if c > 1: c = 0 r = r+1 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 15 / 26

연산가능한계산기 I cmd 함수에서 btn text 를디퐅트로설정하여 click 함수에전달함으로써어떤버튼이눌린것인지알수있음 # 반복문으로숫자버튼생성 r = 0 c = 0 for btn_text in num_pad_list: def cmd(x=btn_text): click(x) Button(num_pad, text=btn_text, width=5, command=cmd).grid(row=r, column=c) c = c+1 if c > 2: c = 0 r = r+1 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 16 / 26

연산가능한계산기 II 연산자에도 cmd 함수추가할것 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 17 / 26

연산가능한계산기 III 계산 (=), 지우기 (C) 기능추가 # 키입력함수 : def click(key): # = 버튼이눌렸을때계산수행 : if key == = : try: result = str(eval(display.get()))[0:10] display.insert(end, " = " + result) except: display.insert(end, " --> Error!") # C 버튼이눌려졌을때 display 엔트리위젯내용비움 : elif key == "C": display.delete(0, END) # 그외다른키를눌렀을때실행될기본동작 : 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 18 / 26

연산가능한계산기 IV else: display.insert(end, key) 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 19 / 26

연산가능한계산기 V 상수, 진수변환, 계승기능추가 # 팩토리얼함수 : def factorial(n): return "factorial (!)" # 10 진수를 2 진수로변환하는함수 : def to_binary(n): return "-> binary" # 2 진수를 10 진수로변환하는함수 : def from_binary(n): return "binary -> 10" 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 20 / 26

연산가능한계산기 VI # 키입력함수 : def click(key): # = 버튼이눌렸을때계산수행 : if key == "=": try: result = str(eval(display.get()))[0:10] display.insert(end, " = " + result) except: display.insert(end, " --> Error!") # C 버튼이눌려졌을때 display 엔트리위젯내용비움 : elif key == "C": display.delete(0, END) # 상수버튼에대한작업 : elif key == constants_list[0]: display.insert(end, "3.141592654") 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 21 / 26

연산가능한계산기 VII # 함수버튼에대한작업 : elif key == functions_list[0]: n = display.get() # 현재 display 엔트리위젯값수집 display.delete(0, END) # 현재 display 엔트리위젯내용비움 display.insert(end, factorial(n)) elif key == functions_list[1]: n = display.get() # 현재 display 엔트리위젯값수집 display.delete(0, END) # display 엔트리위젯내용비움 display.insert(end, to_binary(n)) elif key == functions_list[2]: n = display.get() # 현재 display 엔트리위젯값수집 display.delete(0, END) # display 엔트리위젯내용비움 display.insert(end, from_binary(n)) 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 22 / 26

연산가능한계산기 VIII # 그외다른키를눌렀을때실행될기본동작 : else: display.insert(end, key) # 상수프레임생성 constants = Frame(window) constants.grid(row=3, column=0, sticky=w) constants_list = [ pi ] # 반복문으로상수버튼생성 r = 0 c = 0 for btn_text in constants_list: def cmd(x=btn_text): click(x) 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 23 / 26

연산가능한계산기 IX Button(constants, text=btn_text, width=22, command=cmd).grid(row=r, column=c) r = r+1 # 함수프레임생성 functions = Frame(window) functions.grid(row=3, column=1, sticky=e) functions_list = [ factorial (!), 10-> binary, binary -> 10 ] # 반복문으로함수버튼생성 r = 0 c = 0 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 24 / 26

연산가능한계산기 X for btn_text in functions_list: def cmd(x=btn_text): click(x) Button(functions, text=btn_text, width=13, command=cmd).grid(row=r, column=c) r = r+1 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 25 / 26

To do 모든버튼이잘작동하도록빠진부분프로그램하시오. 간단한통계 ( 평균, 분산, 표준편차등 ) 및공학용계산기를 작성하시오. 박창이 ( 서울시립대학교통계학과 ) tkinter 를이용한계산기구현 26 / 26