python pygame 更新文本标签
python pygame update text label
我希望在按下按键但没有任何反应时更新文本标签。它可能与循环有关,但我不确定如何修复它。
我正在使用pygame
import pygame
pygame.init()
display_width = 800
display_height = 600
screen = pygame.display.set_mode((display_width, display_height))
done = False
pygame.display.set_caption('UTTER')
bg = pygame.image.load("wheel.bmp")
digitalFont = pygame.font.Font("digital-7.ttf",26)
mixValue = "03"
def updateLED (dial, value):
if dial == "mix":
mixLED = digitalFont.render(value, 1, (255,255,0))
screen.blit(mixLED, (362, 166))
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
updateLED("mix", "01")
print("down")
# Add this somewhere after the event pumping and before the display.flip()
screen.blit(bg, (0, 0))
updateLED ("mix", "03")
pygame.display.update()
pygame.quit()
quit()
当您按下键时,您会更改标签
updateLED("mix", "01")
但是你有另一个 updateLED
在每个循环中将文本更改为旧文本
updateLED("mix", "03")
所以您看不到新文本。
blit
在缓冲区中绘制(以防止屏幕闪烁)并且 pygame.display.update()
将缓冲区发送到屏幕。
但还有其他问题 - KEYDOWN
是非常短的事件 - 当按键状态从 "UP" 更改为 "DOWN" - 而不是按住按键时。
# default text
text = "03"
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
# new text
text = "01"
print("down")
elif event.type == pygame.KEYUP:
if event.key == pygame.K_DOWN:
# again old text
text = "03"
print("up")
screen.blit(bg, (0, 0))
updateLED("mix", text)
pygame.display.update()
我希望在按下按键但没有任何反应时更新文本标签。它可能与循环有关,但我不确定如何修复它。
我正在使用pygame
import pygame
pygame.init()
display_width = 800
display_height = 600
screen = pygame.display.set_mode((display_width, display_height))
done = False
pygame.display.set_caption('UTTER')
bg = pygame.image.load("wheel.bmp")
digitalFont = pygame.font.Font("digital-7.ttf",26)
mixValue = "03"
def updateLED (dial, value):
if dial == "mix":
mixLED = digitalFont.render(value, 1, (255,255,0))
screen.blit(mixLED, (362, 166))
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
updateLED("mix", "01")
print("down")
# Add this somewhere after the event pumping and before the display.flip()
screen.blit(bg, (0, 0))
updateLED ("mix", "03")
pygame.display.update()
pygame.quit()
quit()
当您按下键时,您会更改标签
updateLED("mix", "01")
但是你有另一个 updateLED
在每个循环中将文本更改为旧文本
updateLED("mix", "03")
所以您看不到新文本。
blit
在缓冲区中绘制(以防止屏幕闪烁)并且 pygame.display.update()
将缓冲区发送到屏幕。
但还有其他问题 - KEYDOWN
是非常短的事件 - 当按键状态从 "UP" 更改为 "DOWN" - 而不是按住按键时。
# default text
text = "03"
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
# new text
text = "01"
print("down")
elif event.type == pygame.KEYUP:
if event.key == pygame.K_DOWN:
# again old text
text = "03"
print("up")
screen.blit(bg, (0, 0))
updateLED("mix", text)
pygame.display.update()