본문 바로가기
고등학교 활동

꿈두레 GUI 총정리(2022.5.18 ~ 2022.6.2)1편

by CromArchive 2024. 6. 25.
반응형

파이썬 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편에서 계속...>

728x90
반응형