当前位置: 首页 > 知识库问答 >
问题:

在pygame中如何区分鼠标左键点击、右键点击?[副本]

谭彦
2023-03-14

从pygame的api来看,它有:

event type.MOUSEBUTTONDOWN, MOUSEBUTTONUP, MOUSEMOTION

但是没有办法区分右点击和左点击?

共有3个答案

柯正谊
2023-03-14

单击鼠标按钮时,MOUSEBUTTONDOWN事件发生一次,松开鼠标按钮时,MOUSEBUTTONUP事件发生一次。pygame。事件Event()对象有两个属性,提供有关鼠标事件的信息。每个鼠标按钮都关联一个值。例如,鼠标左键、鼠标中键、鼠标右键、鼠标滚轮向上、鼠标滚轮向下的属性值分别为1、2、3、4、5。当按下多个键时,会发生多个鼠标按钮事件。更多的解释可以在模块pygame的文档中找到。事件

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

        if event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:
                print("left mouse button")
            elif event.button == 2:
                print("middle mouse button")
            elif event.button == 3:
                print("right mouse button")
            elif event.button == 4:
                print("mouse wheel up")
            elif event.button == 5:
                print("mouse wheel down")

pygame.mouse.get_pressed()返回表示所有鼠标按钮状态(TrueFalse)的布尔值列表...只要按住按钮,按钮的状态就是True。当按下多个按钮时,列表中的多个项目是True。列表中的第一、第二和第三个元素代表鼠标左键、中键和右键。如果按下特定按钮,可以通过订阅进行评估:

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

    mouse_buttons = pygame.mouse.get_pressed()

    button_msg = ""
    if mouse_buttons[0]:
        button_msg += "left mouse button  "
    if mouse_buttons[1]:
        button_msg += "middel mouse button  "
    if mouse_buttons[2]:
        button_msg += "right mouse button  "

    if button_msg == "":
        print("no button pressed")
    else:
        print(button_msg)
陶弘业
2023-03-14

你可能想仔细看看本教程,以及n.st对这个问题的回答。

因此,显示如何区分右键单击和左键单击的代码如下所示:

#!/usr/bin/env python
import pygame

LEFT = 1
RIGHT = 3

running = 1
screen = pygame.display.set_mode((320, 200))

while running:
    event = pygame.event.poll()
    if event.type == pygame.QUIT:
        running = 0
    elif event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT:
        print "You pressed the left mouse button at (%d, %d)" % event.pos
    elif event.type == pygame.MOUSEBUTTONUP and event.button == LEFT:
        print "You released the left mouse button at (%d, %d)" % event.pos
    elif event.type == pygame.MOUSEBUTTONDOWN and event.button == RIGHT:
        print "You pressed the right mouse button at (%d, %d)" % event.pos
    elif event.type == pygame.MOUSEBUTTONUP and event.button == RIGHT:
        print "You released the right mouse button at (%d, %d)" % event.pos

    screen.fill((0, 0, 0))
    pygame.display.flip()
凌宏大
2023-03-14
if event.type == pygame.MOUSEBUTTONDOWN:
    print(event.button)

事件。按钮可以等于多个整数值:

1 - left click
2 - middle click
3 - right click
4 - scroll up
5 - scroll down

您也可以获取当前按钮状态,而不是等待事件:

state = pygame.mouse.get_pressed()

这将以以下形式返回元组:(左键单击、中键单击、右键单击)

每个值都是一个布尔整数,表示是否按下该按钮。

 类似资料:
  • 问题内容: 如何使用jQuery获取单击的鼠标按钮? 这是由鼠标右键和鼠标左键触发的,能捕捉鼠标右键的方式是什么?如果以下内容存在,我将很高兴: 问题答案: 从jQuery 1.1.3版开始,规范化了,因此您不必担心浏览器兼容性问题。有关文档 分别为鼠标左键,鼠标中键和鼠标右键提供1、2或3,因此:

  • 我有一个,我想左键点击,右键点击。通常,在JTable上单击鼠标左键可以选择一行。我想做同样的右键点击加上显示一个弹出菜单。有人知道怎么做吗?

  • 检测左,右和鼠标轮事件。我想让它只检测左点击。 源代码:

  • 我想知道如何编写代码来检测鼠标点击精灵。例如:

  • 我正在开发一个javafx扫雷游戏,目前只使用鼠标左键输入。我想用鼠标右键也让用户可以标记可能的炸弹。我查看了Button类的Oracle网页,它说: “当按下并释放按钮时,将发送ActionEvent。应用程序可以通过实现EventHandler来处理ActionEvent来执行基于此事件的某些操作。按钮也可以通过实现EventHandler来处理MouseEvent来响应鼠标事件。” http

  • 问题内容: 我正在学习Pygame制作带有Python的游戏。但是,我遇到了一个问题。我正在尝试检测播放器当前何时单击屏幕,但是我的代码无法正常工作。我的代码实际上是搞砸了,还是我正在使用的在线Pygame编译器? 当我运行此代码时,输​​出控制台在每秒几千次内向文本“您正在单击”发送垃圾邮件。即使我没有单击屏幕,它仍然会显示此信息。即使我的鼠标是不是 在 屏幕上。相同的文字。一遍又一遍。Pyga