본문 바로가기
[ Python ]/- 파이썬 실습연습

pygame - [텍스트입력]

by MRG 2022. 9. 19.
728x90
반응형

▣ 안녕하세요. 이번장에서는 텍스트를 입력받고 

입력한 텍스트를 화면에 바로 출력하는 코드를 공부해보겠습니다.

 

▣ 기본적인 화면 구성하는 코드를 작성하겠습니다.

항상 pygame을 진행하실 때 pygame.init() 초기화하는 코드를 잊지 말고 넣어주세요.

그리고 text를 입력 받을 변수를 만들어주시고,

글꼴 객체, 폰트 랜더링하는 코드까지 작성해주세요.

 

728x90

 

▣ 이제 무한반복으로 코드를 입력받아야 하기 때문에 

while문을 통해서 무한반복을 하고 입력받는 코드를 작성 넣겠습니다.

먼저 기본적으로 pygame을 종료하는 코드가 있어야 하기 때문에

스페이스키를 누르면 pygame이 종료되는 코드를 먼저 작성했습니다.

 

▣ 그리고 이어서 if event.key == pygame.K_RETURN: 엔터 키를 누르는 조건문을 작성해주시고
print(text)  텍스트 출력하는 코드를 작성했습니다.

이렇게 출력하는 코드를 작성한 이유는

우리가 화면에서 입력한 텍스트를 데이터로 가져온다라는 느낌을 주기 위함입니다.

 

▣ 엔터키를 누르고 입력한 텍스트가 무엇이라면 어떤 작업을 해라라고 코드를 작성할 수 있겠죠?

그리고 이어서 입력받은 데이터를 엔터를 통해 text = '' "  초기화를 해주세요.

그럼 화면에서 입력을 하고 엔터를 하면 디버그 터미널에 입력받은 텍스트가 출력되고 초기화됩니다. 

 

▣ 다음으로 elif event.key == pygame.K_BACKSPACE: 이 코드는 backspace키를 누르면 진행하는 조건문입니다. 

backspace 키를 누르면 text = text [:-1] 텍스트 리스트에 맨 오른쪽 값을 제외(자르기)하고 대입을 하는 코드입니다.

python에서 문자를 다루는 코드를 공부했듯이 문자에서

[:-1] 이렇게 코드를 작성하면 인덱스에 문자를 슬라이싱 자르게 됩니다.

 

▣ else: text += event.unicode 코드는 입력한 문자를 텍스트에 하나하나 추가할 수 있습니다.

다시 말해 엔터를 누르거나 backspace키를 누르지 않고 그냥 입력을 하면 텍스트를 추가하는 코드입니다.

 

 

▣ 그리고 screen.fill(screen_color) 코드를 넣어야 합니다.

그 이유는 매번 똑같은 텍스트를 랜더링 하고 출력하게 되면 실시간으로 텍스트가 변화한 걸 알 수가 없습니다.

프로그램에 속도는 매우 빠르기 때문에 똑같은 텍스트가 계속 그려지게 되고 텍스트를 지울 때 그 변화를 알 수 없습니다.

그렇기 때문에 화면 색 채워서 그리고 다시 문자를 그리는 방식으로 코드를 작성해야 합니다.            
screen.blit(txt_surface, (200, 300)) 는 문자 그리기는 코드이고 
pygame.display.flip() 코드는 화면 전체를 업데이트하는 코드입니다.

이렇게 저장을 하고 디버그를 해보면 

 

▣ 화면에서 입력을 받을 수 있고 지우거나 엔터키를 눌러서 출력할 수 있습니다.

 

https://www.pygame.org/docs/ref/event.html?highlight=event%20unicode 

 

pygame.event — pygame v2.1.1 documentation

Pygame handles all its event messaging through an event queue. The routines in this module help you manage that event queue. The input queue is heavily dependent on the pygame.displaypygame module to control the display window and screen module. If the dis

www.pygame.org

 

728x90
반응형

'[ Python ] > - 파이썬 실습연습' 카테고리의 다른 글

pygame - [소리 제어]  (0) 2022.10.14
pygame - [이미지 제어]  (0) 2022.10.06
pygame - [마우스 제어]  (0) 2022.09.16
pygame - [텍스트출력]  (0) 2022.09.15
pygame - [도형그리기]  (0) 2022.09.14

댓글