首页 > 解决方案 > 绑定 w 和另一个键的代码是什么?

问题描述

我正在使用 python 编写游戏。我用过tkinter图书馆。我想将键绑定在一起wa 我该怎么做?我试过使用<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

标签: pythontkinter

解决方案


试试这个:

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循环检查两个键是否同时按下。


推荐阅读