Text를 화면에 표현하기 > Pygame - python GUI module

본문 바로가기
사이트 내 전체검색

회원로그인

올서베이넷
무료 온라인 설문 사이트
OVITII
웹 프레젠테이션 도구

Pygame - python GUI module

Text를 화면에 표현하기

페이지정보

글쓴이 관리자 조회 34,572 조회 날짜 20-02-23 00:23 / Update:20-02-23 00:48
댓글 0 댓글

SNS 공유

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

내용

Text를 화면에 표현하기

 

 

이번 강좌에서는 Text를 SCREEN안에 표현해보는 것을 알아본다.

 

pygame안에서 객체를 SCREEN안에 보여주기 위해서는 Surface 객체로 변환해야 한다.

이미지 역시 pygame.image.load() 하는 순간 Surface 객체로 변환되어서 저장된다.

 

따라서 Text도 Surface 객체로 변환 후, SCREEN 안에 blit 하여 복사해준다.

 

Text를 Surface 객체로 변환하기 위해서는 다음 순서로 진행한다.

 

1) 시스템의 폰트로부터 Font 객체를 생성한다.

2) 생성된 Font 객체를 통해 Text를 새로운 Surface 객체로 그려준다.

3) 생성된 Surface 객체를 SCREEN에 blit 해준다.

 

 

 

1. Font 객체 생성

 

시스템의 폰트로 부터 Font 객체를 생성하는 메서드는 SysFont() 이다.

형식은 아래와 같다.

 

pygame.font.SysFont( font name, size, bold=False, italic=False)

 

Sysfont() 메서드를 통해 Font 객체를 생성하여 저장한다.

 

myFont = pygame.font.SysFont( "arial", 30, True, False)

 

 

시스템 폰트를 사용하지 않고, font file로 부터 폰트 객체를 생성하려면 Font() 메서드를 사용한다.

 

pygame.font.Font(font filename, size)

 

myFont = pygame.font.Font( "Font.ttf", 30)

 

default 시스템 폰트를 사용하려면 font filename을 "None"으로 한다.

 

myFont = pygame.font.Font( None, 30)

 

 

만약, 시스템 폰트의 이름을 모른다면 get_fonts()를 통해 시스템의 모든 폰트 이름을 확인할 수 있다.

 

print( pygame.font.get_fonts() )

 

결과

['arial', 'arialblack', 'bahnschrift', 'calibri', 'cambriacambriamath', 'cambria', 'candara', 'comicsansms', 'consolas', 'constantia', 'corbel', 'couriernew', 'ebrima', 'franklingothicmedium', 'gabriola', 'gadugi', 'georgia', 'impact', 'inkfree', 'javanesetext',

..........

..........

'hcrdotumext', 'hcrbatang', 'hcrbatangext', 'hcrbatangextb', 'hyhwpeq', 'hancomeqn', 'newjumja', 'hancomgothic', 'hancomgothicregular', 'haanwing2', 'hansantteutdotumregular', 'hansantteutdotum', '한컴산뜻돋움', '한컴산뜻돋움regular']

 

 

 

2. Surface 객체에 Text 쓰기

 

Font 객체는 render() 메서드를 통해, Text를 Surface 객체에 그려준다.

형식은 아래와 같다.

 

render(Text, antialias, color, background=None)

 

render() 메서드를 통해 Text를 Surface 객체로 생성한다.

 

BLACK = ( 0, 0, 0 )

text_Title= myFont.render("Pygame Text Test", True, BLACK)

 

# 안티알리아싱은 선을 그릴때, 픽셀사이에 blur bit를 사용하여 선을 부드럽게 만드는 그래픽 기법이다.

만약 안티알리아싱을 하지 않으면 글자의 선이 매우 투박하게 나타난다.

 

 

 

3. 생성된 Text Surface를 SCREEN에 blit() 하기

 

Text Surface를 SCREEN에 blit()하는 것은 Image를 표시할 때, 사용한 것과 같다.

형식은 아래와 같다.

 

SCREEN.blit(text_Title, 좌표)

 

SCREEN.blit(text_Title, [200, 300])

 

모든 Surface는 Rect 객체를 가질 수 있다.

만약 Text_Title을 SCREEN의 가운데에 위치하고 싶다면, Image와 마찬가지로 Rect 객체를 이용할 수 있다.

 

text_Rect = text_Title.get_rect()

 

text_Rect.centerx = round(SCREEN_WIDTH / 2)

text_Rect.y = 50

 

SCREEN.blit(text_Title, text_Rect)

 

 

 

4. Text 표현하기 전체 코드

 

import pygame

 

# 스크린 전체 크기 지정

SCREEN_WIDTH = 400
SCREEN_HEIGHT  = 500

 

# 색상 상수

BLACK = (0, 0, 0)

 

# pygame 초기화

pygame.init()

 

# 스크린 객체 저장
SCREEN = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("pygame test")

 

# FPS를 위한 Clock 생성
clock = pygame.time.Clock()

 

playing = True
while playing:

    # 이벤트 처리
    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            playing = False
            pygame.quit()

 

       

    # 스크린 배경색 칠하기

    SCREEN.fill((255, 255, 255))

 

    # Font 객체 생성

    myFont = pygame.font.SysFont( "arial", 30, True, False)

 

    # Text를 surface에 그리기, 안티알리어싱, 검은색

    text_Title= myFont.render("Pygame Text Test", True, BLACK)

 

    # Rect 생성

    text_Rect = text_Title.get_rect()

 

    # 가로 가운데, 세로 50 위치

    text_Rect.centerx = round(SCREEN_WIDTH / 2)

    text_Rect.y = 50

 

    # Text Surface SCREEN에 복사하기, Rect 사용

    SCREEN.blit(text_Title, text_Rect)

 

    # Text를 surface에 그리기, 알리어싱, 검은색

    text_Title2= myFont.render("Pygame Text Test 2", True, BLACK)

 

    # Text Surface SCREEN에 복사하기, 좌표 사용

    SCREEN.blit(text_Title2, [50, 200])

 

    # 작업한 스크린의 내용을 갱신하기

    pygame.display.flip()

 

    # 1초에 60번의 빈도로 순환하기

    clock.tick(60)
 

 

 

실행 결과

 

안티알리아싱이 적용된 Text와  알리아싱이 적용된 Text의 차이점과

Text도 render()를 통해 Surface 객체에 그려져 이미지처럼 Rect를 사용할 수 있다는 것을 알아둔다.

 

2921044682_1582443556.0811.png

댓글목록 sfs

총 22 건 , 1 페이지
게시물 검색
Pygame - python GUI module 목록
번호 제목 글쓴이 조회 날짜
1 관리자 52030 02-21
2 관리자 43329 02-22
3 관리자 40278 02-24
4 관리자 39253 02-22
5 관리자 38193 02-22
6 관리자 36042 02-21
열람중 관리자 34573 02-23
8 관리자 33486 02-22
9 관리자 33438 03-10
10 관리자 32788 02-22
11 관리자 32647 02-27
12 관리자 29337 02-25
13 관리자 29053 04-05
14 관리자 28934 02-21
15 관리자 27662 03-11
16 관리자 27247 03-05
17 관리자 26597 03-11
18 관리자 25706 03-11
19 관리자 23486 03-11
20 관리자 22836 04-05
21 관리자 21442 03-10
22 관리자 20587 03-11
GNUBOARD_M
Copyright © JBMPA.com All rights reserved.