Pygame - текст не будет отображаться в окне - PullRequest
0 голосов
/ 14 января 2019

Я отображал некоторый текст в окне, но когда я выполнил код, он показывал только пустое черное окно. Я понятия не имел, что случилось, так как исключений не было. Это просто не будет работать.

Ну, я абсолютный новичок, который только что прошел несколько курсов 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 голосов
/ 14 января 2019

Вам нужно позвонить 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()
0 голосов
/ 14 января 2019

Поскольку люди уже прокомментировали, что вы должны позвонить 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()
0 голосов
/ 14 января 2019

Вам необходимо использовать pg.display.update () или pg.display.flip () после того, как вы нарисовали текст, т.е. после строки win.blit. Разницу и использование этих двух можно найти здесь: Разница между pygame.display.update и pygame.display.flip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...