为什么在使用 F1 键停止代码后按下 Enter 键时此代码不打印 Hi?
Why this code is not printing Hi when the Enter key is pressed after stopping the code using F1 key?
from pynput import keyboard
import time
break_program = True
def on_press(key):
global break_program
print (key)
if key == keyboard.Key.f1:
print ('end pressed')
break_program = False
return True
elif key == keyboard.Key.enter:
print ('enter pressed')
break_program = True
return True
else:
return True
print("Press 'F1' key to stop the bot.")
print("Press enter to start the bot.")
with keyboard.Listener(on_press=on_press) as listener:
while break_program == True:
print('Hi')
time.sleep(1)
listener.join()
此代码应在按下 F1
时停止 运行ning,在按下 Enter
时应停止 运行。
在按下 Enter
时,它进入 elif
状态并打印 enter pressed
但不打印 Hi
因为 break_program
被分配回 True
示例输出:
Press 'F1' key to stop the bot.
Press enter to start the bot.
Hi
Hi
Hi
Hi
Key.f1
end pressed
Key.enter
enter pressed
输出应该如何:
Press 'F1' key to stop the bot.
Press enter to start the bot.
Hi
Hi
Hi
Hi
Key.f1
end pressed
Key.enter
enter pressed
Hi
Hi
...
你应该使用非阻塞线程,你的代码应该是:
from pynput import keyboard
import time
break_program = True
def on_press(key):
global break_program
print (key)
if key == keyboard.Key.f1 and break_program:
print ('end pressed')
break_program = False
if key == keyboard.Key.enter:
print ('enter pressed')
break_program = True
print("Press 'F1' key to stop the bot.")
print("Press enter to start the bot.")
listener = keyboard.Listener(on_press=on_press)
listener.start()
while True:
if break_program:
print("Hi")
time.sleep(1)
from pynput import keyboard
import time
break_program = True
def on_press(key):
global break_program
print (key)
if key == keyboard.Key.f1:
print ('end pressed')
break_program = False
return True
elif key == keyboard.Key.enter:
print ('enter pressed')
break_program = True
return True
else:
return True
print("Press 'F1' key to stop the bot.")
print("Press enter to start the bot.")
with keyboard.Listener(on_press=on_press) as listener:
while break_program == True:
print('Hi')
time.sleep(1)
listener.join()
此代码应在按下 F1
时停止 运行ning,在按下 Enter
时应停止 运行。
在按下 Enter
时,它进入 elif
状态并打印 enter pressed
但不打印 Hi
因为 break_program
被分配回 True
示例输出:
Press 'F1' key to stop the bot.
Press enter to start the bot.
Hi
Hi
Hi
Hi
Key.f1
end pressed
Key.enter
enter pressed
输出应该如何:
Press 'F1' key to stop the bot.
Press enter to start the bot.
Hi
Hi
Hi
Hi
Key.f1
end pressed
Key.enter
enter pressed
Hi
Hi
...
你应该使用非阻塞线程,你的代码应该是:
from pynput import keyboard
import time
break_program = True
def on_press(key):
global break_program
print (key)
if key == keyboard.Key.f1 and break_program:
print ('end pressed')
break_program = False
if key == keyboard.Key.enter:
print ('enter pressed')
break_program = True
print("Press 'F1' key to stop the bot.")
print("Press enter to start the bot.")
listener = keyboard.Listener(on_press=on_press)
listener.start()
while True:
if break_program:
print("Hi")
time.sleep(1)