Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在PyGame上显示文本?_Python_Text_Pygame_Pycharm_Game Engine - Fatal编程技术网

Python 如何在PyGame上显示文本?

Python 如何在PyGame上显示文本?,python,text,pygame,pycharm,game-engine,Python,Text,Pygame,Pycharm,Game Engine,我正在尝试创建一个游戏,我需要在不同的区域显示文本,因此我尝试创建一个类来显示文本,但我需要调用pygame.display.set_mode来blit我的文本,但我已经: black = (0, 0, 0) white = (255, 255, 255) gold = (250, 175, 50) blue = (50, 50, 250) class Display: def __init__(self, width, height, colour): self.w

我正在尝试创建一个游戏,我需要在不同的区域显示文本,因此我尝试创建一个类来显示文本,但我需要调用pygame.display.set_mode来blit我的文本,但我已经:

black = (0, 0, 0)
white = (255, 255, 255)
gold = (250, 175, 50)
blue = (50, 50, 250)


class Display:
    def __init__(self, width, height, colour):
        self.width = width
        self.height = height
        self.colour = colour
        canvasW, canvasH = width, height
        canvas = pygame.display.set_mode((canvasW, canvasH), pygame.NOFRAME)
        canvas.fill(colour)


class Text:
    def __init__(self, text, size, colour, bg, font, bold, italic, x, y, width, height, col):
        self.text = text
        self.size = size
        self.colour = colour
        self.bg = bg
        self.font = font
        self.bold = bold
        self.italic = italic
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.col = col

        Display(width, height, col)
        pygame.font.init()
        myFont = pygame.font.SysFont(font, size, bold, italic)
        textSurf = myFont.render(text, False, colour, bg)
        Display.canvas.blit(textSurf, (x, y))


class DrawDisplay:
    def __init__(self, width, height, col, intro):
        self.width = width
        self.height = height
        self.col = col
        self.intro = intro

        os.environ['SDL_VIDEO_CENTERED'] = '1'
        pygame.init()

        Display(self.width, self.height, self.col)
        # canvasW, canvasH = width, height
        pygame.display.set_caption("TRAVELLER")

        # canvas = pygame.display.set_mode((canvasW, canvasH), pygame.NOFRAME)
        clock = pygame.time.Clock()
        pygame.display.flip()

        if intro:
            # Text('TRAVELLER', 50, black, 'freesansbold.ttf')
            Text('TRAVELLER', 50, black, white, 'freesansbold.ttf', True, False, 10, 100, width, height, col)
            # Text('TRAVELLER', 48, white, 'freesansbold.ttf')
            pygame.display.update()
            clock.tick(120)
            pygame.display.flip()
            time.sleep(7.5)
            pygame.quit()
        else:
            while True:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        pygame.quit()
                        sys.exit()
            canvas.fill(gold)
            clock.tick(120)
            pygame.display.flip()


class Load(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        width = 450
        height = 250
        DrawDisplay(width, height, gold, True)


class User(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        width = 1920
        height = 1080
        DrawDisplay(width, height, blue, False)


LoaderThread = Load()
UserThread = User()

LoaderThread.start()
LoaderThread.stop()
UserThread.start()
我不知道如何在不将文本连接到display类的情况下执行此操作,也不知道如何在需要时调用它。

阅读和

创建
显示
文本
的实例:

display=display(self.width、self.height、self.col)
text1=Text('traveler',50,黑色,白色,'freesansbold.ttf',真,假,10100,宽,高,柱)
Display
需要一种方法来绘制背景和更新显示:

类显示:
定义初始(自身、宽度、高度、颜色):
self.width=宽度
自我高度=高度
颜色
canvasW,canvasH=宽度,高度
self.canvas=pygame.display.set_模式((canvasW,canvasH),pygame.NOFRAME)
pygame.display.set_标题(“旅行者”)
def牵引接地(自):
self.canvas.fill(self.color)
def更新(自我):
pygame.display.flip()
类文本在构造函数中构造文本曲面。它获取一个
draw
方法,该方法可以
blit
将文本(
self.textSurf
)显示到显示表面(
canvas
),这是
draw
方法的一个参数:

类文本:
定义初始(自身、文本、大小、颜色、背景、字体、粗体、斜体、x、y、宽度、高度、列):
self.text=文本
self.size=大小
颜色
self.bg=bg
self.font=font
self.bold=粗体
self.italic=斜体
self.x=x
self.y=y
self.width=宽度
自我高度=高度
self.col=col
myFont=pygame.font.SysFont(字体、大小、粗体、斜体)
self.textSurf=myFont.render(文本、假、颜色、背景)
def绘制(自身、画布):
blit(self.textSurf,(self.x,self.y))
不要使用
时间。睡眠
。您有一个主应用程序循环,所以请使用它。根据状态绘制场景
self.intro
。如果按下某个键或经过一段时间,请跳过介绍。用于以毫秒为单位获取时间。e、 g:

类绘图显示:
定义初始(自身、宽度、高度、列、介绍):
self.width=宽度
自我高度=高度
self.col=col
self.intro=intro
os.environ['SDL\u VIDEO\u CENTERED']=“1”
pygame.init()
pygame.font.init()
显示=显示(self.width、self.height、self.col)
text1=Text('traveler',50,黑色,白色,'freesansbold.ttf',真,假,10100,宽,高,柱)
clock=pygame.time.clock()
start\u time=pygame.time.get\u ticks()
运行=真
运行时:
时钟滴答(120)
#汉德尔事件
当前时间=pygame.time.get_ticks()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果self.intro和event.type==pygame.KEYDOWN:
运行=错误
#改变游戏状态
如果self.intro和current_time>start_time+7500:#7.5秒
运行=错误
#分开画
display.drackground()
#画场景
如果self.intro:
text1.draw(display.canvas)#
其他:
#绘制游戏对象
# [...]
通过
#更新显示
display.update()
了解和

创建
显示
文本
的实例:

display=display(self.width、self.height、self.col)
text1=Text('traveler',50,黑色,白色,'freesansbold.ttf',真,假,10100,宽,高,柱)
Display
需要一种方法来绘制背景和更新显示:

类显示:
定义初始(自身、宽度、高度、颜色):
self.width=宽度
自我高度=高度
颜色
canvasW,canvasH=宽度,高度
self.canvas=pygame.display.set_模式((canvasW,canvasH),pygame.NOFRAME)
pygame.display.set_标题(“旅行者”)
def牵引接地(自):
self.canvas.fill(self.color)
def更新(自我):
pygame.display.flip()
类文本在构造函数中构造文本曲面。它获取一个
draw
方法,该方法可以
blit
将文本(
self.textSurf
)显示到显示表面(
canvas
),这是
draw
方法的一个参数:

类文本:
定义初始(自身、文本、大小、颜色、背景、字体、粗体、斜体、x、y、宽度、高度、列):
self.text=文本
self.size=大小
颜色
self.bg=bg
self.font=font
self.bold=粗体
self.italic=斜体
self.x=x
self.y=y
self.width=宽度
自我高度=高度
self.col=col
myFont=pygame.font.SysFont(字体、大小、粗体、斜体)
self.textSurf=myFont.render(文本、假、颜色、背景)
def绘制(自身、画布):
blit(self.textSurf,(self.x,self.y))
不要使用
时间。睡眠
。您有一个主应用程序循环,所以请使用它。根据状态绘制场景
self.intro
。如果按下某个键或经过一段时间,请跳过介绍。用于以毫秒为单位获取时间。e、 g:

类绘图显示:
定义初始(自身、宽度、高度、列、介绍):
self.width=宽度
自我高度=高度
self.col=col
self.intro=intro
os.environ['SDL\u VIDEO\u CENTERED']=“1”
pygame.init()
pygame.font.init()
显示