9

私はpygameで長方形を描くところまで来ましたが、「こんにちは」のようなテキストをその長方形に入れることができる必要があります。これどうやってするの?(それについても説明していただければ幸いです。ありがとうございます)

これが私のコードです:

import pygame
import sys
from pygame.locals import *

white = (255,255,255)
black = (0,0,0)


class Pane(object):
    def __init__(self):

        pygame.init()
        pygame.display.set_caption('Box Test')
        self.screen = pygame.display.set_mode((600,400), 0, 32)
        self.screen.fill((white))
        pygame.display.update()

    def addRect(self):
        self.rect = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
        pygame.display.update()

    def addText(self):
        #This is where I want to get the text from

if __name__ == '__main__':
    Pan3 = Pane()
    Pan3.addRect()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit(); sys.exit();

お時間をいただきありがとうございます。

4

2 に答える 2

10

最初にFont(またはSysFont) オブジェクトを作成する必要があります。renderこのオブジェクトでメソッドを呼び出すSurfaceと、指定されたテキストを含む が返されます。このテキストは、画面またはその他の でブリットできますSurface

import pygame
import sys
from pygame.locals import *

white = (255,255,255)
black = (0,0,0)


class Pane(object):
    def __init__(self):
        pygame.init()
        self.font = pygame.font.SysFont('Arial', 25)
        pygame.display.set_caption('Box Test')
        self.screen = pygame.display.set_mode((600,400), 0, 32)
        self.screen.fill((white))
        pygame.display.update()


    def addRect(self):
        self.rect = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2)
        pygame.display.update()

    def addText(self):
        self.screen.blit(self.font.render('Hello!', True, (255,0,0)), (200, 100))
        pygame.display.update()

if __name__ == '__main__':
    Pan3 = Pane()
    Pan3.addRect()
    Pan3.addText()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit(); sys.exit();

ここに画像の説明を入力

通常、事前にではなく、メインループですべての描画を行うため、コードが少し奇妙に見えることに注意してください。また、プログラムでテキストを頻繁に使用する場合は、 の結果をキャッシュすることを検討してくださいFont.render。これは非常に遅い操作です。

于 2013-10-01T13:16:03.300 に答える