▣ 안녕하세요. 이번장에서는 텍스트를 입력받고
입력한 텍스트를 화면에 바로 출력하는 코드를 공부해보겠습니다.
▣ 기본적인 화면 구성하는 코드를 작성하겠습니다.
항상 pygame을 진행하실 때 pygame.init() 초기화하는 코드를 잊지 말고 넣어주세요.
그리고 text를 입력 받을 변수를 만들어주시고,
글꼴 객체, 폰트 랜더링하는 코드까지 작성해주세요.
▣ 이제 무한반복으로 코드를 입력받아야 하기 때문에
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
'[ 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 |
댓글