#python-3.x #pygame
#python-3.x #pygame
Вопрос:
Когда я пытаюсь запустить этот код pygame, он мгновенно закрывается??
Окно не закрывается мгновенно, когда я прекращаю рисовать текст, поэтому я знаю, что, должно быть, сделал что-то не так.
import pygame
background_colour = (255, 255, 255)
(width, height) = (1920, 1080)
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('fat')
screen.fill(background_colour)
font = pygame.font.Font(None, 32)
color = pygame.Color('dodgerblue2')
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
text = ""
while running:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
vanishingtext = event.unicode
text = event.unicode
elif event.type == pygame.K_BACKSPACE:
text = text[:-1]
elif event.type == pygame.K_RETURN:
interpret(text)
text = ""
else:
pass
txt_surface = font.render(text, True, color)
screen.blit(txt_surface, (50, 100))
я ожидаю, что появится экран, позволяющий мне вводить и отступать назад, если я нажму enter, текст должен полностью исчезнуть и должна запуститься функция, которая будет интерпретировать строку. я еще не определил interpet как функцию, но я делаю это после того, как выясню, смогу ли я заставить его работать на экране.
Комментарии:
1. Откуда вы получаете функцию
interpret()
?vanishingtext
никогда не инициализируется. Похоже, что ваши последние два утверждения имеют неправильный уровень отступа.2. Я исправил это сейчас, я стер
interpret()
иvanishingtext
и исправил отступ. это все еще не работает.
Ответ №1:
Код не вызывается pygame.init()
. Также есть два цикла событий, второй из которых просто завершится, как только running
станет False
.
import pygame
pygame.init()
(width, height) = ( 400, 200)
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('fat')
background_colour = pygame.Color('white')
color = pygame.Color('dodgerblue2')
font = pygame.font.Font(None, 32)
clock = pygame.time.Clock()
running = True
text = ''
while running:
# handle events and user-input
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if ( event.key >= pygame.K_SPACE and event.key <= pygame.K_z ):
# Append key-stroke's character
text = event.unicode
elif ( event.key == pygame.K_BACKSPACE ):
text = text[:-1]
elif ( event.key == pygame.K_RETURN ):
print("interpret(text) - NOT IMPLEMENTED")
text = ""
# repaint the screen
screen.fill(background_colour)
txt_surface = font.render(text, True, color)
screen.blit(txt_surface, (50, 100))
pygame.display.flip()
clock.tick_busy_loop(60) # limit FPS
Этот код выдает мне окно под названием «fat» с белым фоном. При вводе текста на английской клавиатуре я получаю синие буквы, которые могут быть расставлены в обратном порядке. Нажатие Enter несколько обрабатывается.
Комментарии:
1. Я попытался объединить циклы while.
while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: text = event.unicode elif event.type == pygame.K_BACKSPACE: text = text[:-1] elif event.type == pygame.K_RETURN: text = "" else: pass
Окно все еще работает, но если вы знаете, что не так, не могли бы вы помочь? Я пытаюсь сделать так, чтобы все, что я печатаю, отображалось на моем экране. Это не работает, есть идеи, почему нет? Отступ в моем комментарии не работает, извините!2. Ik здесь явно сказано не говорить спасибо, но я собираюсь просто сказать большое спасибо. Я только начал работать с python и я чрезвычайно благодарен за помощь. Хорошего дня.