Pygame 键被​​按下

2023-12-02

只要按下一个键,pygame 就运行某些东西的惯用方式是什么?和pygame.key.get_pressed()[pygame.K_p]==True or pygame.mouse.get_pressed()==(1,0,0)它似乎只有在按键或按钮被敲击时才会做出反应。应该使用一个while例如循环?

我运行下面的代码,只有在按下按键/按钮时才会在 shell 中打印:

def main():
done = True
while done:
    for i in pygame.event.get():
        if pygame.key.get_pressed()[pygame.K_a] == 1:
            print "Key a is being pressed..."
        elif i.type == KEYDOWN and i.key == pygame.K_q:
            done = 0
    pygame.display.update()
pygame.quit()
main()

Event KEYDOWN表示“按键状态从向上更改为向下” - 并不意味着“按键一直按住”

enter image description here

当您开始按键时 - 它会生成事件KEYDOWN and pygame.event.get()返回非空列表 - 并且for循环可以执行if pygame.event.get()

当您按住按键时 - 它不会生成事件KEYDOWN - and pygame.event.get()返回空列表 - 并且for循环不执行if pygame.event.get()

你的代码应该看起来像

running = True
while running:
    # check events 
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == pygame.K_q:
               running = False

    # do it outside of `for event` loop
    # it is executed many times 
    if pygame.key.get_pressed()[pygame.K_a]: 
        print "Key is hold pressed..."

    pygame.display.update()

或者 - 当你只需要执行一次某件事时

key_A_pressed = False

running = True
while running:
    # check events 
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == pygame.K_q:
               running = False

            elif event.key == pygame.K_a:
               key_A_pressed = True

               # it is executed only once
               print "Key A - start pressing"

        if event.type == KEYUP:
            if event.key == pygame.K_a:
               key_A_pressed = False

               # it is executed only once
               print "Key A - stop pressing"

    # do it only once - outside of `for event` loop
    # it is executed many times 
    #if pygame.key.get_pressed()[pygame.K_a]: 
    # or
    if key_A_pressed:
        print "Key A is held pressed..."

    pygame.display.update()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame 键被​​按下 的相关文章

  • Android:如何在键盘上创建自定义形状键?

    我想知道如何在 Android 键盘上制作自定义形状键 创建自定义键盘相对容易 但创建新按钮需要做什么 他们还需要像普通键盘一样响应所有事件 有什么想法从哪里开始吗 您需要为自定义键盘上所需的每个键创建一个图像 然后创建支持键盘设计的 xm
  • pydev 断点不起作用

    我正在使用 python 2 7 2 sqlalchemy 0 7 unittest eclipse 3 7 2 和 pydev 2 4 开发一个项目 我在 python 文件 单元测 试文件 中设置断点 但它们被完全忽略 之前 在某些时候
  • Json.dump 失败并显示“必须是 unicode,而不是 str”TypeError

    我有一个 json 文件 其中恰好有大量中文和日文 以及其他语言 字符 我将其加载到我的 python 2 7 脚本中使用io open如下 with io open multiIdName json encoding utf 8 as j
  • Django 1.6 的静态文件

    我花了一整天但没有任何作用 我在这里看到了至少 20 篇关于同一主题的帖子 它们各不相同 有不同的建议 但没有一个对我有用 使用 Python 2 7 运行 Django 1 6 我正在尝试从 django 教程加载民意调查应用程序的 cs
  • 在 python 2 或 python 3 中编写 csv 文件的便携式方法

    在我的 Windows 机器上 我通常在 python 2 中这样做来编写 csv 文件 import csv f open out csv wb cr csv writer f delimiter cr writerow a b c f
  • 使用 python/scapy 迭代 pcap 文件数据包

    我想使用 python scapy 迭代 pcap 文件包 该文件有多个协议 当前迭代是特定于协议的 因此如果下一个数据包来自另一个协议 则迭代会 跳转 我不知道为什么现在会变成这样 我想要一个数据包一个数据包 无论什么协议 小例子 dat
  • 在 matplotlib 中使用一组标量值对球体表面着色

    我对 matplotlib 相当陌生 这也是我的第一个问题 我试图代表脑电图记录的头皮表面电位 到目前为止 我已经有了一个球体投影的二维图形 它是使用轮廓生成的 并且几乎可以归结为普通的热图 有什么方法可以在半个球体上完成此操作吗 即生成一
  • Pygame读取MIDI输入

    我参考了Pygame MIDI 文档 https www pygame org docs ref midi html and 这段代码 https stackoverflow com questions 62983509 pygame mi
  • 在 Pandas Dataframe 中保存其他属性

    我记得在 MatLab 时代使用结构化数组 您可以将不同的数据存储为主结构的属性 就像是 a a A magic 10 a B magic 50 etc where a A and a B彼此完全独立 允许您在其中存储不同类型a并根据需要对
  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E
  • 在新式类中替换 __str__ [重复]

    这个问题在这里已经有答案了 我正在转换旧的 Python 代码 并用新样式的类替换一些类 问题是这破坏了替换的行为 str 我不知道为什么 class OldStyle def str self return original old Ol
  • IntelliJ 13 中的完整键盘块

    有时 运行 IntelliJ 时 它会完全阻止程序中的所有键盘输入 例如 我可以用鼠标在文档周 围单击 甚至可以右键单击 粘贴 但是 我无法通过键盘编写任何内容 也无法使用文档内或文档之间的箭头进行导航 唯一有效的键盘相关操作似乎与系统相关
  • 在 Python 中在运行时将方法分配给对象

    我正在尝试在 Python 中执行与 Javascript 相同的操作 a new func function arg1 arg2 var diff arg1 arg2 return diff diff 现在 我这样做的方法是首先定义方法
  • 随机“pythonw.exe 已停止工作”崩溃

    SO 有问题的代码如下 但是它也可能随机发生在其他脚本上 我不认为错误在于代码中 由于某种原因 它有时会完全随机地崩溃并弹出 pythonw exe 已停止工作 的消息 可能是在 5 小时 24 小时或 5 天后 我不明白为什么会崩溃 fr
  • iPhone UIWebview:如何强制使用数字键盘?是否可以?

    我正在尝试使用 PhoneGap 来开发一些 iPhone 应用程序 PhoneGap 基本上包装了一个 UIWebView 它运行良好 问题是我的应用程序有几个仅接受数字输入的输入字段 我确实需要强制使用数字键盘 而不是接受默认的标准键盘
  • 马里奥在 pygame 中跑过屏幕太快

    首先是代码 import pygame sys from pygame locals import class Person pygame sprite Sprite def init self screen self screen scr
  • 如何使用ctrl+c停止tornado web服务器?

    我是龙卷风网络服务器的新手 当我使用 python main tornado py 启动龙卷风网络服务器时 它正在工作 请看下面的代码 import tornado ioloop import tornado web class MainH
  • 使用参数数组的长度作为同一函数的另一个参数的默认值

    这是我第一次在 SO 中提出问题 所以如果我不知何故做得不对 请毫不犹豫地编辑它或要求我修改它 我认为我的问题有点笼统 所以我很惊讶没有找到任何与该主题相关的先前问题 如果我错过了并且这个问题重复了 如果您能提供已回答的链接 我将非常感激
  • pygame.error:此编解码器不支持 set_pos

    我的 python 音频播放器有问题 我使用此功能来暂停正在播放的音乐 def pause event global time pygame mixer music pause time pygame mixer music get pos
  • 如何在按回车键时以编程方式关闭 iOS 键盘

    我创建了一个UITextField以编程方式制作UITextFieldviewController 的属性 我需要通过回车和触摸屏幕来关闭键盘 我能够让屏幕触摸关闭 但按回车键不起作用 我已经了解了如何使用故事板以及通过分配和初始化来做到这

随机推荐

  • Android:即使我在 DatePicker 之外触摸,DatePicker 也会设置值

    我有一个 TextView 当我触摸 TextView 时 它会调用 Date 和 TimePicker 首先 我显示 DatePicker 一旦选择了日期 我就可以设置该值 设置值后 我将从 TimePicker 获取时间 就像 Date
  • 如何在 Stripe (Rails) 中创建费用和客户

    我正在构建一个基于订阅的应用程序 我想通过 Stripe 订阅向客户收费 我正在尝试在提交表单后创建客户和费用 然而 只创建了代币 而不创建费用和客户 因此 表单成功通过 但在 Stripe 仪表板中 测试费用和客户不存在 这是我的控制器
  • 如何在 iOS8 中使用 IOKit 获取设备的序列号作为 IOPlatformSerialNumber 给出 nil 值

    我想知道如何使用获取设备的序列号IOKit在iOS8中 我用了UIDevice serialNumber我可以在 iOS 6 和 7 中获取序列号 在 iOS 8 中 值为platformSerialNumber来了nil在下面一行中 CF
  • CakePHP HTML Helper:链接中的图像被转义?

    从 Cake 1 2 更新到 1 3 我在链接元素中嵌套了一个图像 两者都是由 HTML 帮助程序生成的 然而 嵌套图像的标记被转义了 lt to gt 等等 我知道 HTML 助手现在默认会转义一些东西 但我无法让它改变这种行为 这是生成
  • 当我清除应用程序数据后,它不再起作用

    我正在使用 xamarin 表单制作一个应用程序 我在我的手机上测试了它 然后 apk 就在那里 但是当我清除android上的数据时 我的应用程序不再打开 有人看到了吗 问题是什么 是的 这很正常Xamarin Android在调试模式下
  • SQL Server 架构审计?

    我们有一个 SQL Server 2008 Enterprise 数据库 它有两种不同的模式 一种是我们维护的锁定模式 另一种是我们允许外部开发团队根据自己的需要添加和修改的开放模式 通常这对我们来说效果很好 但一个特定的团队喜欢把事情搞砸
  • Android getResources/getIdentifier 不返回 ID

    我有这样的代码 String s replace menu data imageid png int RID this getApplicationContext getResources getIdentifier s drawable
  • 获取数据帧中每行中的前 n 个值及其出现的列名称

    我有一个像这样的数据框 df pd DataFrame a 1 2 1 b 4 6 0 c 0 4 8 a b c 1 4 0 2 6 4 1 0 8 对于每一行 我需要 both n 在本例中为两个 最高值和相应的列 按降序排列 row
  • C# 相当于 C 中的 DllMain (WinAPI)

    我有一个较旧的应用程序 大约 2005 年 它接受 dll 插件 该应用程序最初是为 Win32 C 插件设计的 但我有一个可用的 C dll 模板 我的问题 我需要进行一些一次性初始化 这在 Win32 C dll 中将在 DllMain
  • 计算午夜后两次之间的持续时间

    如何计算两次之间的持续时间 var start moment 17 00 HH mm var end moment 02 15 HH mm moment duration end diff start asHours outputs 14
  • 使用 Python 中的 Requests 库发送“用户代理”

    我想发送一个值 User agent 使用 Python Requests 请求网页时 我不确定是否可以将其作为标头的一部分发送 如下面的代码所示 debug verbose sys stderr user agent User agent
  • Xcode 中的 Git 提交模板

    我已经添加到全局 git 配置中 git config global commit template gitmessage 创建了 gitmessage file one line summary of changes Because re
  • Cocoa:限制鼠标在屏幕上

    我正在为 OSX 开发一个信息亭模式应用程序 在某些情况下 会连接另一个屏幕 我的应用程序在一个屏幕上全屏运行 使用 self window contentView enterFullScreenMode s withOptions NSD
  • 使用 FastAPI 解析来自 Slack 的传入 POST 请求

    我正在构建一个 FastAPI 服务器来接收 slacklash 命令发送的请求 使用下面的代码 我可以看到以下内容 token BLAHBLAH team id BLAHBLAH team domain myteam channel id
  • 通过命令行从 unittest.TestCase 运行单个测试

    在我们的团队中 我们定义大多数测试用例如下 一门 框架 课程ourtcfw py import unittest class OurTcFw unittest TestCase def setUp Something Other stuff
  • 在映射返回中反应渲染数组

    我有一个正在渲染一些结果的反应组件 我遇到的问题是 result participants 这是一个数组 因此地图渲染两个名称时没有任何空格 我发现很难插入这些空格 result participants 是一个字符串数组 如果长度 gt
  • 将子网掩码“/”符号转换为 Cisco 0.0.0.0 标准

    我已经搜索过寻求帮助 但找不到我的问题的答案 情况 我需要将 NN 子网掩码表示法 例如IPTABLES 转换为0 0 0 0 cisco 表示法 NN 是子掩码中 1 的数量 从最低八位位组到较高八位位组 每个八位位组都是 8 位整数 可
  • 使用 LogParser 将 SharePoint 使用日志文件导出到数据库中

    基本上 我们有许多由 SharePoint 2007 网站生成的 SharePoint 使用日志文件 我们希望了解它们 为此 我们正在考虑读取日志文件并将其转储到具有适当列等的数据库中 现在我正打算制作一个 SSIS 包来读取所有文本文件并
  • Postgresql - 获取相对于给定日期时间值最接近的日期时间行

    我有一个 postgres 表unique日期时间字段 我想使用 创建一个函数 该函数将日期时间值作为参数 并返回与传递的日期时间值最接近 但不等于 的日期时间的行ID 第二个参数可以指定before or after传递的值 理想情况下
  • Pygame 键被​​按下

    只要按下一个键 pygame 就运行某些东西的惯用方式是什么 和pygame key get pressed pygame K p True or pygame mouse get pressed 1 0 0 它似乎只有在按键或按钮被敲击时