等待鼠标点击被解除的方法?

2024-09-30 22:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个这样的按钮:

if button.collidepoint(mouse_pos) and mouse_down[0]==1:
    toggle()

我遇到的问题是,由于我的鼠标点击持续时间,每一帧都会前后切换。所以我试着加上这个,这样计算机就会等待鼠标被提起

While True:
    if mouse_down[0]==0:
        break

现在这是一个令人崩溃的游戏。谁能告诉我为什么?如果我添加

pygame.time.delay(17)

除此之外,如果有人能告诉我一种等待鼠标被提起的方法,我也将不胜感激


Tags: andpostrueif计算机button鼠标按钮
1条回答
网友
1楼 · 发布于 2024-09-30 22:19:09

它“崩溃”是因为你没有处理事件。见PyGame unresponsive displayPyGame window not responding after a few seconds
您必须处理应用程序循环中的事件。分别见^{}^{}

For each frame of your game, you will need to make some sort of call to the event queue. This ensures your program can internally interact with the rest of the operating system.

如果要等待单击鼠标,则必须处理循环中的事件

无论如何,如果您只想在单击鼠标按钮后切换一次,则需要使用鼠标事件。单击鼠标按钮时MOUSEBUTTONDOWN事件发生一次,松开鼠标按钮时MOUSEBUTTONUP事件发生一次。^{}对象有两个属性,提供有关鼠标事件的信息pos是存储单击位置的元组button存储单击的按钮。每个鼠标按钮都关联一个值。例如,鼠标左键、鼠标中键、鼠标右键、鼠标滚轮向上、鼠标滚轮向下的属性值分别为1、2、3、4、5。当按下多个键时,会发生多个鼠标按钮事件。进一步的解释可以在模块^{}的文档中找到

例如:

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        if event.type == pygame.MOUSEBUTTONDOWN:
            if button.collidepoint(event.pos) and event.button == 1:
                toggle()

另见Pygame mouse clicking detection

相关问题 更多 >