我在窗口上显示了一些文本,但是当我执行代码时,它只显示了一个空白的黑色窗口。我不知道出什么问题了,因为没有例外发生。只是行不通。
嗯,我是一个绝对的初学者,刚刚通过了一些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,颜色完全为白色,但是整个过程根本没有出现。
答案 0 :(得分:0)
绘制文本后,即在win.blit行之后,您需要使用pg.display.update()或pg.display.flip()。两者的区别和用途可以在这里找到:Difference between pygame.display.update and pygame.display.flip
答案 1 :(得分:0)
您必须调用pygame.display.flip
或pygame.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()