【问题标题】:I'm having a problem with stopping python mid process我在停止 python 中间进程时遇到问题
【发布时间】:2022-01-02 06:58:44
【问题描述】:
import pydirectinput
import keyboard
import time
key = keyboard
auto = pydirectinput

keyPressed = False

while True:
   if key.is_pressed("f5"):
      keyPressed = True
      time.sleep(0.5)
   if key.is_pressed("f6"):
      keyPressed = False
      time.sleep(0.5)

   if keyPressed:
      auto.press("e")
      auto.press("q")
    

到目前为止,我的代码可以正常工作并且完全符合我的要求,但有时,由于循环的顺序是线性的,它不会让我输入 f6,因为它处于另一个进程的中间。关于如何使 f6 检查不断运行而不依赖于“进程的位置”的任何建议如果这个问题没有意义,请让我更好地解释它。

【问题讨论】:

  • time.sleep 很可能是你的问题,有什么原因吗?
  • 就在那里,因此代码不会在特定时间内接受多个输入。基本上我在只使用 f6 键的地方拥有它,它只会翻转 keyPressed,没有睡眠,只要我按下 f6,它就可能需要数百个输入,这使得 keyPressed 的值成为随机机会

标签: python input breakpoints pyautogui


【解决方案1】:

使用time.sleep 并避免在按住键时多次触发代码的方法是仅在按下 f6 并且上次迭代没有按下 (keydown) 时切换 keyPressed 或者如果它没有被按下,它在最后一次迭代中被按下(keyup)。要触发keyPressed whey f6 被释放,您的代码如下所示:

keyPressedPreviously = False
if keyPressedPreviously and !key.is_pressed('f6'): # key was released     
    keyPressed = !keyPressed
if key.is_pressed('f6'):
     keyPressedPreviously = True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多