2013-10-01 14 views
5

Ich bin so weit gekommen, ein Rechteck in pygame zu zeichnen, aber ich muss in der Lage sein, Text wie "Hello" in dieses Rechteck zu bekommen. Wie kann ich das machen? (. Wenn Sie es erklären auch, dass sehr geschätzt werden würde Dankes-)So fügen Sie Text in ein Pygame-Rechteck ein

Hier ist mein Code:

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

Vielen Dank für Ihre Zeit.

Antwort

6

Zuerst müssen Sie ein Objekt Font (oder SysFont) erstellen. Rufen Sie die render Methode für dieses Objekt auf, wird Surface mit dem angegebenen Text zurückgegeben, den Sie auf dem Bildschirm oder einer anderen Surface blit.

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

enter image description here

Beachten Sie, dass Sie Ihren Code ein wenig seltsam scheint, in der Hauptschleife die Zeichnung, da in der Regel alles, was Sie tun, vorher nicht. Wenn Sie viel Text in Ihrem Programm verwenden, sollten Sie auch das Ergebnis von Font.render zwischenspeichern, da dies ein sehr langsamer Vorgang ist.

+0

Vielen Dank. Du bist mein Retter. – PythonNovice

+0

Wie können Sie den Text in die Box wickeln? Wenn du zum Beispiel einen ganzen Satz hast .. –

+1

@ChrisNielsen Probiere das http://pygame.org/wiki/TextWrap – sloth

Verwandte Themen