2013-10-01 17 views
5

Pygame'e bir dikdörtgen çizme kadar geldim, ancak bu dikdörtgene "Merhaba" gibi bir metin almam gerekiyor. Bunu nasıl yapabilirim? (. Siz de çok takdir olacağını açıklayabilir Eğer dolsun-sen)Bir pygame dikdörtgeni içine metin ekleme

İşte benim kodudur:

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(); 

Zaman ayırdığınız için teşekkür ederiz.

cevap

6

İlk olarak Font (veya SysFont) nesnesini oluşturmanız gerekir. Bu nesnede render yönteminin çağrılması, ekranda veya başka herhangi bir Surface üzerinde karıştırabileceğiniz verilen metinle bir Surface döndürecektir.

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(); 
genellikle değil önceden, ana döngü içinde tüm çizim yapmak beri kodunuzu, biraz garip görünüyor

enter image description here

Not. Ayrıca, programınızda yoğun bir metin kullandığınızda, çok yavaş bir işlem olduğu için Font.render sonucunu önbelleğe almayı düşünün.

+0

Çok teşekkür ederim. Sen benim kurtarıcımsın. – PythonNovice

+0

Metin kutusunu kutuya nasıl yazdırabilirsiniz? Örneğin tüm bir cümle varsa .. –

+1

@ChrisNielsen Bu http://pygame.org/wiki/TextWrap'i deneyin – sloth