python - 绑定 w 和另一个键的代码是什么?
问题描述
我正在使用 python 编写游戏。我用过tkinter
图书馆。我想将键绑定在一起w
,a
我该怎么做?我试过使用<w,a>
, <w-a>
,<w+a>
但<KeyPress-w - KeyPress-a>
它只是没有用。有任何想法吗?
我的错误:
Traceback (most recent call last):
File "C:\Users\DEVDHRITI\Desktop\Files&Folders\HMMMMM\Zombie Surge\zombie surge.pyw", line 63, in <module>
frame.bind('<w , a>',wa)
File "C:\Users\DEVDHRITI\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1392, in bind
return self._bind(('bind', self._w), sequence, func, add)
File "C:\Users\DEVDHRITI\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1346, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: extra characters after detail in binding
解决方案
试试这个:
import tkinter as tk
keys_pressed = {"w": False,
"a": False}
def pressed(event):
if event.char in keys_pressed:
keys_pressed[event.char] = True
def released(event):
if event.char in keys_pressed:
keys_pressed[event.char] = False
def loop():
if keys_pressed["w"] and keys_pressed["a"]:
print("W and A are pressed at the same time")
elif keys_pressed["w"]:
print("W is pressed")
elif keys_pressed["a"]:
print("A is pressed")
root.after(100, loop)
root = tk.Tk()
root.bind("<KeyPress>", pressed)
root.bind("<KeyRelease>", released)
loop()
root.mainloop()
它使用全局字典来跟踪按下的键。并使用tkinter
循环检查两个键是否同时按下。
推荐阅读
- python - 在 Django 中打印由 Python 函数创建的列表
- c - C按文件中的单词迭代
- rest - 我应该如何在 Redis 中存储用户的多个会话对?
- javascript - 如何让我的子类显示在它的准父母中?
- docker - 为通过 VPN 容器连接的 docker 容器打开端口
- python - 作业完成后运行异步功能
- google-apps-script - 从 Rhino 切换到 V8 导致错误代码 PERMISSION_DENIED
- r - 部署以生成网站后出现闪亮错误
- sql - 雪花 - 检查字符串是否为字母数字?
- docker - Artifactory 在每次重新启动时重新创建内置证书