好友
阅读权限10
听众
最后登录1970-1-1
|
50吾爱币
作为一名python新手,突发奇想想到能不能用python实现急停功能,于是我就自己写了一个,但是出现了问题,请路过大佬指点以下,谢谢
以下是代码
import ctypes
import keyboard
import threading
kmdll = ctypes.CDLL(r'./ddll64.dll')
ret = kmdll.OpenDeviceByID(0, 0)
if not ret:
print("unlink")
else:
kmdll.EnableAccurateDelay()
print("xing hao:", kmdll.GetModel())
print("ban ben:", kmdll.DllGetVersion())
print("ID:", kmdll.GetChipID())
kmdll.Notify_KeyBoard(1)
def on_key_release_a(event=None):
kmdll.KeyPressVirtualCode(68, 50, 120)
def on_key_release_d(event=None):
kmdll.KeyPressVirtualCode(65, 50, 120)
def on_key_release_w(event=None):
kmdll.KeyPressVirtualCode(83, 50, 120)
thread_a = threading.Thread(target=keyboard.on_release_key, args=('a', on_key_release_a))
thread_d = threading.Thread(target=keyboard.on_release_key, args=('d', on_key_release_d))
thread_w = threading.Thread(target=keyboard.on_release_key, args=('w', on_key_release_w))
thread_a.start()
thread_d.start()
thread_w.start()
thread_a.join()
thread_d.join()
thread_w.join()
keyboard.wait()
kmdll.Close()
问题在A键和D键无限循环按下弹起,我想实现的功能是当A键松开时只按一下D键,反之亦然。
一开始我是三个功能整合在一个线程里,发现无限循环,后来分成三个线程加了线程锁也还是无限循环,用条件锁功能就实现不了
后面我还需要用nuitka打包成exe
请各位大佬给点解决思路,如果有例子就更好了
python新手,请给位大佬多多指点 |
最佳答案
查看完整内容
那加多个变量,不给它循环呗
[mw_shl_code=python,true]
import pyautogui
from pynput import keyboard
block_sign = 1
# 按下按键方法
def on_press(key):
pass
# 松开按键方法
def on_release(key):
global block_sign
#
try:
if key.char == 'a':
if block_sign == 1:
# 按一次按键 d
pyautogui.press('d')
...
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|