我最近决定从头开始制作自己的游戏。我决定做的第一件事是创建一个按键绑定系统。我轻松制作了两种类型 - [单击,切换]。然而,随着最受欢迎的类型“hold”的创建,问题出现了。我无法同时跟踪按下和释放(新线程根本不会创建。我通过 threading.active_count() 查看了这一点)。我怎样才能解决这个问题。我有一个逐笔检查的想法(键盘在循环中跟踪,等待 0.1 秒。您可以在一次滴答中检查按下,在下一次滴答中检查释放,依此类推)整个代码相当大,所以我只给出循环。
f_Kb 是一个类,我在其中编写了 check_button_press 和 check_button_release 方法,分别检查给定的键是否被按下或释放。
i = 0
while i < 100/0.1: #цикл идет 100 секунд
z = 0
while z < len(f_Kb.type): обнуление всех кулдаунов (для предотвращения ложных, повторных считываний)
f_Kb.cooldowns[z] = False
z += 1
z = 0
while z < len(f_Kb.online_keys): #запуск функций у активных биндов
f_Kb.behaviours[f_Kb.get_index_by_object(f_Kb.online_keys[z],f_Kb.keys)]()
z += 1
#...............проблемное место.................
keyboard.on_release(f_Kb.check_button_press)
keyboard.on_press(f_Kb.check_button_release)
i += 1
我怎样才能实现我的想法?
有趣的问题,我决定为你做一个小例子: