Python Pygame代码滞后于闪烁的鼠标

Python Pygame代码滞后于闪烁的鼠标,python,pygame,python-3.6,Python,Pygame,Python 3.6,因此,我尝试创建一个按钮,它将简单地设置背景图像(通过在另一个图像上闪烁一个)。但是,我认为这个代码应该有效: place = True action = None def startup(action): while place == True: gameDisplay.blit(imgstr, (0, 0)) mouse = pygame.mouse.get_pos() click = pygame.mouse.get_pressed() if 500

因此,我尝试创建一个按钮,它将简单地设置背景图像(通过在另一个图像上闪烁一个)。但是,我认为这个代码应该有效:

place = True
action = None
def startup(action):
    while place == True:
    gameDisplay.blit(imgstr, (0, 0))
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    if 500+140 > mouse[0] > 500 and 140+150 > mouse[1] > 140:
        pygame.draw.rect(gameDisplay, black, (500,140,150,150))
        pygame.mouse.set_cursor(*pygame.cursors.tri_left)
        if click[0] == 1 and action != None:
            if action == "play":
                game_loop()
    else:
        pygame.draw.rect(gameDisplay, white, (500,140,150,150))
        pygame.mouse.set_cursor(*pygame.cursors.arrow)
def game_loop():
    while place == True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RCTRL:
                    pygame.quit()
                    quit()
        gameDisplay.blit(imgm, (0, 0))

        pygame.display.update()
startup("play")

但是pygame只是以黑屏启动,鼠标闪烁,直到Windows停止它,因为它没有响应。

如果有人想知道的话,我已经用以下代码成功地解决了这个问题:

import pygame

pygame.init()

screen = pygame.display.set_mode([852,441])

pygame.display.set_caption("test")

keep_going = True
mousedown = True

background_image = pygame.image.load("start.jpg")

main_img = pygame.image.load("chromos.png")

colorkey = background_image.get_at((0,0))
background_image.set_colorkey(colorkey)
black = (0,0,0)
red = (255,0,0)

picx = 0
picy = 0

main_picx = 0
main_picy = 0

screen.fill(red)

while keep_going:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keep_going = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            if pygame.mouse.get_pos() > (500, 500) and pygame.mouse.get_pos() < (700, 700):
                picx = 5000
                picy = 5000
                mousedown = False
        print(event)
    if mousedown:
        screen.blit(background_image, (picx,picy))
    else:
        screen.blit(main_img, (main_picx, main_picy))
    pygame.display.update()
pygame.quit()
quit()
导入pygame
pygame.init()
screen=pygame.display.set_模式([852441])
pygame.display.set_标题(“测试”)
坚持下去
mousedown=True
background\u image=pygame.image.load(“start.jpg”)
main\u img=pygame.image.load(“chromos.png”)
colorkey=背景图像。在((0,0))处获取图像
背景图像。设置颜色键(颜色键)
黑色=(0,0,0)
红色=(255,0,0)
picx=0
picy=0
main_picx=0
main_picy=0
屏幕填充(红色)
继续前进的同时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
继续前进=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
如果pygame.mouse.get_pos()>(500500)和pygame.mouse.get_pos()<(700700):
picx=5000
皮西=5000
mousedown=False
打印(事件)
如果鼠标向下移动:
屏幕。blit(背景图像,(picx,picy))
其他:
屏幕。blit(主图像,(主图像,主图像))
pygame.display.update()
pygame.quit()
退出

您的缩进不正确,将在
缩进错误中解决。确保您在此处发布的代码与实际代码匹配。而且,它没有响应,因为你没有调用任何(第三个要点)。出现黑屏的原因是您没有在
startup
@TedKleinBergman更新显示。我在pygame.event.get()语句中的第一个if语句和startup()语句中的while循环之间添加了一个for事件,还将pygame.display.update()添加到startup(),现在它只会在白色中绘制一次矩形,这是一个缩进错误吗?如果是,我该如何修复它?我知道这可能看起来很含糊,但是,我的命令提示符不会运行代码,因此我绝对没有错误消息可供帮助。如果您对代码进行了更改,请使用新代码编辑您的问题。如果代码包含
缩进错误
,则根本无法运行。在您在问题中提供的代码中,
行后面没有缩进,而place==True:
,这将立即导致程序崩溃。我建议遵循Python初学者教程,在开始编程图形应用程序之前,了解更多有关调试和错误的信息。图形应用程序可能需要大量调试,如果没有很好的理解,它可能会变得非常困难和烦人。