当我运行 update() 函数时,它会更新窗口,但是随后我尝试更新窗口时,它不会更新,即使我调用完全相同的函数。问题要么是这样,要么是它不再绘图,我不确定是哪一个。
代码:
def drawmove(rm,move,baseline):
for i in range(len(move)):
imagex = baseline[0]+(move[i][0]*5)
imagey = baseline[1]-(move[i][1]*5)
win.blit(move_icon_img, (imagex*rm,imagey*rm))
def refresh(rm,players,current_player,moveset):
#background
win.blit(background_img, (0,0))
#5th move card (the one in the middle)
move_4 = moveset[4][1]
drawmove(rm,move_4,[13,56])
pygame.display.update()
我查过了,每次传入的内容都不一样,而且blit函数每次传入的数字也不一样,但是输出到窗口的不一样。
我将不同的值传递到drawmove中的blit函数中,并期望窗口看起来不同,但窗口看起来是一样的。
这是重现错误的最少代码:
import pygame
win = pygame.display.set_mode((100,100))
while True:
win.fill((0,0,0))
pygame.display.update()
print("black")
input()
win.fill((255,255,255))
pygame.display.update()
print("white")
input()
编辑:问题是 pygame 窗口不断崩溃,但仍然不确定如何修复它
使用
input()
与需要处理事件的窗口应用程序不兼容,因此窗口管理器不会认为应用程序已崩溃。
这是一个简单的示例,显示每次释放按键时都会切换颜色。
from itertools import cycle
import pygame
background_colors = cycle(["black", "white"]) # pygame has named colors
background_color = next(background_colors) # initialise
width, height = 640, 480 # screen dimensions
FPS = 60
pygame.init()
screen = pygame.display.set_mode((width, height))
clock = pygame.time.Clock() # to limit the framerate and ease CPU burden
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYUP:
background_color = next(background_colors)
# set the title bar instead of printing to the console
pygame.display.set_caption(background_color)
screen.fill(background_color)
pygame.display.update()
clock.tick(FPS) # limit FPS
pygame.quit()
请参阅 pygame 支持的命名颜色的此列表。