본문 바로가기
[ CODING STUDY ]/》파이썬 공부

파이썬 17장(tkinter_01, import, GUI, random, calendar, 버튼)

by MRG 2020. 11. 9.
728x90
반응형

▣ 안녕하세요. 
오늘은 import 모률 간단하게 몇 개와 
tkinter를 활용해서 파이썬으로 GUI를 공부해보겠습니다.

 

▣ 먼저 calendar를 공부해겠습니다. 
import는 우리가 중간중간 사용해봤습니다.
이건 외부라이브러르 모듈을 가지고 와서 사용하는 키워드입니다.
더 쉽게 이야기하면 다른 사람이 만들어둔 코드를 가지고 와서 사용한다라고 생각해주시면 됩니다.
calendar말 그래도 날짜에 관한 모듈을 가져왔습니다.
그리고 print를 해서 
calendar.month 한 달에 정보를 가져오게 하고 
함수에 값을 2020, 11로 지정합니다.
그럼 2020년 11월에 날짜 값이 한꺼번에 출력되는 걸 확인할 수 있습니다. 


▣ 그런데 여기서 의문이 생깁니다. 
calendar를 사용할때마다 calendar이름을 다 적고 사용해야 해서
불편함이 있습니다. 이럴 때
as를 사용하거나 변수로 지정해주면 됩니다.

 

 

▣ 이렇게 as를 쓰고 c를 입력하면
import 한 calendar에 기능을 as 변수 이름으로 지정해서 사용하겠다고 생각하시면 됩니다. 
그리고 print에서 동일하게 claendar에 풀네임이 아닌 
c 변수로 접근해서 이렇게 출력이 가능합니다.

 

▣ 이렇게 prcal() 함수를 사용하면 2020이라고 매개 변숫값을 주게 되면 
2020년에 모든 달에 값이 나오는 걸 확인할 수 있습니다. 

▣ 이번에는 datetime 모듈을 알아보겠습니다.
우리가 저번에 사용해본 것처럼 
datetime.today() 함수를 사용하면 오늘 날짜가 출력됩니다.

 

▣ now()를 사용해서 hour, minute, second로 하나하나 접근해서 출력하면
이렇게 현재, 시간, 분, 초를 각각 값을 받아와 출력할 수 있습니다.

 

▣ 이번에는 random을 사용해보겠습니다. 
random에 randint(1, 10) 값을 입력하게 되면 1~10까지 값을 랜덤으로 출력할 수 있고,

 

▣ choice를 사용하게 되면 이렇게 컴퓨터가 선택을 할 수 있게도 
지정해주고 사용할 수 있습니다. 


▣ 이렇게 간단하게 모듈을 살펴보았습니다. 
지금 소개한 모듈들은 정말 많이 사용되는 모듈이라 꼭 직접 사용해보시고 숙지하시기 바랍니다. 
그럼 이번에는 GUI를 표현하는 모듈을 공부해보겠습니다.


▣ tkinter이라는 모듈을 사용하겠습니다. 

 

▣ 비주얼 스튜디오 코드로 코딩을 진행했습니다.
이점 참고해주시면 됩니다. 
import로 먼저 tkinter을 불러오겠습니다.
이건 파이썬에서 간단하게 GUI를 구현할 수 있게 해주는 모듈이기 때문에 
엄청나게 GUI를 표현하기는 어렵습니다. 
이점 참고해주세요.


▣ 그리고 tk라는 변수에 tkinter.Tk() 함수를 선언해주고
tk.title을 지정해주겠습니다.
이건 윈도 창에 제목을 지정하는 겁니다. 저는 간단하게
GUI라고 지정했습니다.


▣ 그리고 geometry() 함수로 화면에 크기 해상도를 지정해주겠습니다.
이건 여러분들이 공부하시는 컴퓨터에 해상도가 다르니 여러분들에 모니터에 맞게 
조절해서 지정하시면 될꺼같습니다.  


▣ 그런 다음에 mainloop() 함수 코드를 추가해줘야 합니다.
제가 처음에 시작할 때도 말씀드렸지만,
우리가 한 줄에 컴퓨터한테 명령을 주게 되면
위에서 아래 
순서대로 명령을 실행하게 되고 
그 한줄에 명령은 한 번만 작동하게 됩니다.
그리고 프로그램에 속도는 매우 빠릅니다.
그렇기 때문에 mainloop() 함수가 없다면 한번 실행하고 
프로그램이 종료됩니다. 
그러니 이걸 빼고 한번 실행해보시고 
넣어서 실행해보시는 걸 추천드립니다. 
그럼 제가 무슨 말을 하는지 아실 수 있을 겁니다. 
그리고 실행을 해보면 이렇게 우리가 만든 윈도우창이 나오는 걸 확인할 수 있습니다.
이걸 GUI라고 합니다. 
그럼 간단한 기능 몇 가지만 같이 공부해보겠습니다. 

 

▣ 이렇게 label이라는 걸 지정해서 
place함수로 위치를 지정하고 출력해보면 우리가 원하는 위치에
텍스트를 출력할 수 있게 됩니다. 
Label함수에 첫 번째 인수는 tkinter.Tk() 윈도우 객체이고 
텍스처와 폰트는 항상 = 을 넣어주고 값을 입력해야 합니다.
" " 큰따옴표를 붙어서요 이점 꼭 잊지 말아 주세요.

 

▣ 그리고 여러분들이 만들면서 아셔야 하는 건 x y 위치에 기준입니다.
우리가 보통 x= 0, y = 0에 값은 정중앙으로 알고 있습니다.
하지만 아닙니다. 
왼쪽 맨 위에 가 0,0이라는 점 꼭 확인하시고 코딩을 진행해주시면 됩니다.

 


▣ 이번에는 버튼입니다. 
버튼도 라벨이랑 동일 값을 가지고 있습니다. 
위치까지 place로 x, y를 지정해주면 이렇게 버튼과 라벨이 잘 나오는 걸 확인할 수 있습니다.
하지만 버튼을 눌러도 반응이 없습니다.
이건 우리가 따로 이벤트를 만들어줘야 합니다. 

 


▣ 쉽게 이야기하면 이벤트라는 건 우리가 버튼을 클릭했을 때 명령을 하는 함수를 의미합니다.
우리가 함수를 선언하는 것과 동일하게 함수를 만들어주시고요.
함수를 실행하면 button ["text"] = "클릭" 버튼에 텍스트가 클릭이라는 문자로 바뀌어라라는 코드도 
추가해줍니다. 

 

▣ 그리고 다시 아까 Button() 함수 안에 맨 끝에 command=함수를 지정해줍니다.
그럼 command명령을 하겠다 클릭하면 바로 우리가 지정한 함수를 이라고 생각해주시면 되고
이렇게 해서 실행을 하고 버튼을 클릭하면 
클릭이라는 문자로 바뀌는 걸 확인할 수 있습니다. 

 

▣ 이번에는 캔버스라는 스케치북?을 만들어보겠습니다. 
라벨과 버튼이랑 지정하는 게 좀 다릅니다.
Canvas값에 x, y가 아닌 가로 세로에 크기를 지정해줍니다. 
bg는 배경색을 의미하고요.
그리고 canvas는 pack()이라는 함수로 그려줘야 합니다.
이렇게 해서 실행해보면 초록색으로 캔버스가 생성되는 걸 확인할 수 있습니다. 
여기에 이미지를 넣어보겠습니다.

 

▣ 우선 여러분들이 좋아하는 이미지를 인터넷에서 다운로드하여주세요.
그리고 이렇게 img = tkinter.PhotoImage() 넣을 이미지를 지정하는데 여기서 중요한 건


▣ 그 이미지가 우리가 만든 test.py 파이썬 파일과 동일한 위치가 들어가야 합니다.  
그리고 canvas.create_image(300, 200, image=img)를 지정 해고 실행을 해보면
이렇게 이미지가 캔버스 안에 잘 출력되는 걸 볼 수 있습니다.


▣ 그럼 마지막으로 버튼을 누르면 이미지가 바뀌는걸 한번 구현해보겠습니다. 

 

▣ 아까처럼 함수로 지정을 하는데 여기서 중요한 건 
마지막 부분에 canvas, image = img2 바꿀 이미지로 지정해야 한다는 것입니다.
이렇게 하지 않으면 이미지가 바꾸지 않고 아무것도 나오지 않게 됩니다. 
그리고 잘 보면 canvas가 처음에 button이 두 번째 코딩되는 걸 확인할 수 있습니다.
이것도 이유가 있으니 한번 순서를 바꿔서 코딩을 해보시기 바랍니다. 

 

▣ 그리고 이렇게 실행을 하면 클릭으로 문자가 바뀌고 
다른 이미지로 출력되는 걸 확인할 수 있습니다.


▣ 자 오늘은 이렇게 여러 모듈과 thinkter로 GUI를 구현해보았습니다.
앞으로 계속 GUI를 구현하여 간단한 게임을 하나하나 만들어보려고 합니다. 
꼭 직접 위에 있는 내용들은 여러분만에 방법으로 공부해주시기 바랍니다.
공부하시다가 어려운 게 있으시면 댓글이나 방명록 남겨주세요.
그럼 다음장에서 뵙겠습니다.


▣ 포기하지 마세요!!! 저도 했습니다.!!! 파이팅!!!

728x90
반응형

댓글