파이썬 GUI를 배워보았는데 꿈두래 특성상 한번에 다 나가기 힘들기도 하고
배우는 입장에도 한꺼번에 받아들이기가 힘들어서 차시 정도로 나눠 나갔습니다.
하지만 보는 입장에서는 한번에 다 합쳐져 있는 게 보기 좋은거 같아 한번에 정리하게 되었습니다.
GUI는 뭘까요?
GUI는 Graphic User Interface의 약자로 사용자가 프로그램을 편리하게 사용할 수 있도록 아이콘이나 쉬운 그래픽으로 표현해 놓은 것을 말합니다.

만약 모든 프로그램이 특정 명령어를 입력해서 작동하는 방식이라면, 많은 사람들이 컴퓨터를 다루기 힘들어할 것입니다.
그렇기 때문에 더 쉽고 간단하게 프로그램을 다룰 수 있도록 접근성을 높여주는 방식중 하나가 바로 GUI입니다.
파이썬에서는 tkinter 라는 라이브러리를 이용해서 GUI를 구현합니다.
지금부터는 꿈두래 수업 내용을 정리한 것입니다.
첫번째는 기본기 입니다.

from tkinter import*이라고 되어 있는데
import tkinter랑 차이점은
첫번째는 from (모듈이름) import (부분) 이라는 뜻이고
import (모듈이름)은 모듈 전체를 가져오는 것입니다.
(*은 전체를 뜻하는 것)
두번째 방식은 모듈 내 변수를 쓸 때 모듈.변수를 써야 하고
첫번째 방식은 원래 저희가 쓰던 '변수()' 방식으로 사용하심 됩니다.
아무튼 Tk 클래스 객체 root를 생성하고
title을 써서 제목으로 "Sello와 함께하는 꿈두레"라고 이름을 붙여줍니다.
다음으로 geometry를 사용하면 창 크기를 조절할 수 있고 x,y 순으로 입력됩니다.
resizable의 경우 주석에 쓴 것처럼
True False를 사용해 가로세로의 크기를 고정시킬 수 있습니다.
마지막에 있는 root.mainloop는
프로그램이 계속 실행될 수 있게 해주는 함수입니다.
(processing의 draw()와 비슷한 기능인 것 같습니다.)
실행하게 되면

이렇게 빈 창 하나가 생성됩니다. (마치 렉걸린 화면같다.)
두번째는 버튼입니다.

버튼은 프로그램 UI에서 중요한 역할을 하는 요소입니다.
위에 사진처럼 깔끔하면 좋겠지만 저희는 무료 모듈을 사용하기 때문에

이런 느낌이 더 강합니다.

이번 코드입니다.
btn이라는 변수에 Button()함수를 선언하고 안에 크기, 폰트, 여백, 텍스트 등을 입력하여 버튼을 만들 수 있습니다.
text를 쓰면 버튼 안에 글자를 쓸 수 있고
padx, pady를 쓰면 여백의 크기를 조절 할 수 있습니다.
width와 height는 전체적인 크기를 조절하는 것이고
bg는 배경 색
fg는 폰트 색을 조절합니다.
image를 이용하면 버튼에 이미지도 넣을 수 있습니다.

실행하면 위와 같습니다.
세번째는 라벨 입니다.

코드는 위와 같습니다.
라벨은 창의 주석문 같은 개념으로
Label()을 이용해서 생성합니다.
text = ''을 이용해서 내용을 넣을 수 있고
image = 이용해서 이미지 파일도 넣을 수 있습니다.
저는 이것을 이용해서 Click 과 rollback버튼을 이용해 그림을 바꾸는 프로그램을
만들었습니다.
def change(): - 그림을 10'c로 바꾸고 글도 see you 'next' time으로 바꿈
def rollback(): - 그림을 다시 0'c로 바꾸고 글도 안#녕^@#하세요!$@ 로 바꿈
아래는 실행 결과 입니다.

click 버튼을 누르면 아래로 변하고
rollback 버튼을 누르면 위로 돌아갑니다.

4번째는 text위젯과 entry(기입장)위젯 입니다.

코드는 다음과 같습니다.
*Text위젯
TxT라는 변수에 text()에 사용할 글자 크기나 글꼴을 지정합니다.
END는 텍스트가 끝날때까지 입력으로 받는다는 뜻입니다.
pack 하여 나타나도록 한 뒤
"passward"라는 글자를 삽입합니다.
*entry위젯
e라는 변수에 entry를 넣고 너비는 30으로 설정합니다.
pack하여 나타나도록 한 뒤
e(entry위젯)에 "한줄만 입력해라, 한번 말했다"라는 문장을 삽입합니다.
이렇게만 하면

이런 위젯이 나타납니다.
여기서 버튼을 누르면 카톡처럼 메시지를 출력하는 기능을 넣어보겠습니다.

이 부분인데요.
def btncmd():라는 함수를 선언합니다.
함수의 내용은 text와 entry의 내용을 출력하고
내부의 내용을 delete로 삭제한다는 명령입니다.
text는 여려 줄 중 한 줄만 입력했기 때문에 1을 써서 한줄을 제거하였고
entry는 한 박스(칸)의 위젯이기 때문에 0을 써서 한칸을 제거했습니다.
이 명령어를 버튼에 command=btncmd를 추가해
버튼을 눌렀을 때 실행되도록 합니다.
실행하면

이렇게 버튼이 추가된 것을 볼 수 있고
누르면

내용이 삭제되고

출력되는 것을 볼 수 있습니다.
이것을 잘 이용하면 카카오톡같은 채팅 프로그램을 제작할 수도 있겠습니다.
<2편에서 계속...>
'고등학교 활동' 카테고리의 다른 글
| 꿈두레 최종 프로젝트 실시(2022. 6. 17.) (0) | 2024.06.25 |
|---|---|
| 꿈두레 GUI 총정리(2022.5.18 ~ 2022.6.2)2편 (0) | 2024.06.25 |