【发布时间】:2022-10-06 04:14:02
【问题描述】:
我试图让脚本不确定地运行,直到我按下一个键(在本例中为 \'q\')。在尝试了多种切换条件组合并移动代码之后,我无法弄清楚如何做到这一点。有人可以帮我制作函数(\'right\' 和 \'left\')循环,直到我按下键 \'q\'?另外,即使我按了\'q\',我也希望脚本继续运行。这样即使我关闭了它们,我仍然可以使用左右功能。谢谢
import time
import keyboard
from pynput.keyboard import Controller, Key
import pyautogui
pykeyboard = Controller()
def right(): # This is the action I want to do
while keyboard.read_key(.1) != \"q\":
time.sleep(.2)
pykeyboard.press(\'d\')
pyautogui.keyDown(\"space\")
time.sleep(5)
pyautogui.keyUp(\"space\")
pykeyboard.release(\'d\')
def left():
while keyboard.read_key(.1) != \"q\": # This should continue executing until \'q\' is pressed
time.sleep(.2)
pykeyboard.press(\'a\')
pyautogui.keyDown(\"space\")
time.sleep(3)
pyautogui.keyUp(\"space\")
pykeyboard.release(\'a\')
while True:
if keyboard.read_key() == \"t\": # This listens for when \'t\' is pressed
right()
if keyboard.read_key() == \"r\":
left()
if keyboard.read_key() == \"+\":
break
-
keyboard未定义。那应该是pykeyboard吗? -
你为什么在这里使用三个模块来做同样的事情?
keyboard不能做你想做的一切吗?它有on_press_key和on_release_key事件。 -
到目前为止,我正在使用不同的模块,因为我想扩展我的代码,而键盘没有我将来需要的功能。
-
一个
while-loop 可能会阻塞其他循环和函数,您可能必须在单独的线程中运行它们。 -
你的循环使用
sleep,所以当你真正按下q时它们可能会错过 - 我会使用分离的线程来检查q并设置全局变量running = False并使用while running:而不是while keyboard.read_key(.1) != \"q\":的循环
标签: python while-loop