Pygame-文本不会出现在窗口中

时间:2019-01-14 13:10:42

标签: python text pygame

我在窗口上显示了一些文本,但是当我执行代码时,它只显示了一个空白的黑色窗口。我不知道出什么问题了,因为没有例外发生。只是行不通。

嗯,我是一个绝对的初学者,刚刚通过了一些Python课程几周,所以我只是在玩pygame模块,而不是像游戏开发这样的大计划。 我也尝试搜索类似的问题,但是它们都很复杂,由于代码很长,我无法完全理解。 我检查并没有语法错误,字体文件存在,并且对象名称在正确的位置,即它们没有使用错误的方法。 我不知道还能尝试什么...

import pygame as pg

pg.init()

win = pg.display.set_mode((720,540))

consolas = pg.font.SysFont("Consolas.ttf", 100)

text = consolas.render("hello", False , (255,255,255))

win.blit(text , (0,0))

我希望字符串“ hello”会在表面上变黑,大小为100,颜色完全为白色,但是整个过程根本没有出现。

3 个答案:

答案 0 :(得分:0)

绘制文本后,即在win.blit行之后,您需要使用pg.display.update()或pg.display.flip()。两者的区别和用途可以在这里找到:Difference between pygame.display.update and pygame.display.flip

答案 1 :(得分:0)

您必须调用pygame.display.flippygame.display.update才能真正使用获胜表面的内容更新屏幕。

此外,您还应该具有一个主循环,该主循环可以通过调用pygame.event.get来处理事件。这样可以确保您的窗口保持打开状态。另外,如果您不处理事件,则窗口将变得无响应,甚至可能不会绘制任何内容(取决于您的操作系统/窗口管理器)

因此将其添加到您的代码中:

run = True
while run:
for e in pg.event.get():
    if e.type == pg.QUIT:
        run = False
    pg.display.update()

答案 2 :(得分:-1)

正如人们已经评论过的那样,您必须致电pygame.display.update()pygame.display.flip() 这是完整的代码:

import pygame as pg

pg.init()

win = pg.display.set_mode((720,540))

consolas = pg.font.SysFont("Consolas.ttf", 100)
running = True
while running:
    text = consolas.render("hello", False , (255,255,255))
    for event in pg.event.get():
        if event.type == pg.QUIT:
            running = False
    win.blit(text , (0,0))
    pg.display.flip()
pg.quit()