你好,我是第一次发帖,我在 python 中遇到了问题。所以我有这段代码和它的键绑定,就像当我按下数字 1 时我需要执行 1() 但在这次运行之后我不希望程序退出但只是等待并在后台运行并等待按下另一个键。使用此程序,它会不断循环 execute()。我该如何解决这个问题?
import threading
import pyautogui
import time
import pyscreeze
from pynput import keyboard
cmb = [{keyboard.Key.alt_l, keyboard.Key.page_up}] #keybind
current = set()
def execute1():
pyautogui.moveTo(2459,122)
pyautogui.leftClick()
pyautogui.moveTo(2368,392)
pyautogui.leftClick()
pyautogui.moveTo(1542,447)
pyautogui.leftClick()
pyautogui.moveTo(1546,518)
pyautogui.leftClick()
pyautogui.moveTo(1649,635)
pyautogui.leftClick()
pyautogui.moveTo(2018,320)
time.sleep(1.35)
pyautogui.leftClick()
pyautogui.typewrite("111")
pyautogui.moveTo(2006,379)
pyautogui.leftClick()
def execute2():
pyautogui.moveTo(2459,122)
pyautogui.leftClick()
pyautogui.moveTo(2271,505)
pyautogui.leftClick()
pyautogui.moveTo(1542,447)
pyautogui.leftClick()
pyautogui.moveTo(1546,518)
pyautogui.leftClick()
pyautogui.moveTo(1649,635)
pyautogui.leftClick()
pyautogui.moveTo(2018,320)
time.sleep(1.35)
pyautogui.leftClick()
pyautogui.typewrite("111")
pyautogui.moveTo(2006,379)
pyautogui.leftClick()
def execute3():
pyautogui.moveTo(2459,122)
pyautogui.leftClick()
pyautogui.moveTo(2292,603)
pyautogui.leftClick()
pyautogui.moveTo(1542,447)
pyautogui.leftClick()
pyautogui.moveTo(1546,518)
pyautogui.leftClick()
pyautogui.moveTo(1649,635)
pyautogui.leftClick()
pyautogui.moveTo(2018,320)
time.sleep(1.35)
pyautogui.leftClick()
pyautogui.typewrite("111")
pyautogui.moveTo(2006,379)
pyautogui.leftClick()
def on_press(key): #check when key presses
if key == keyboard.KeyCode(char='1'): # check if '1' key is pressed
execute1()
current.add(key)
elif key == keyboard.KeyCode(char='2'): # check if '2' key is pressed
execute2()
current.add(key)
elif key == keyboard.KeyCode(char='3'): # check if '3' key is pressed
execute3()
current.add(key)
def on_release(key): #check when key releases
if any([key in z for z in cmb]):
current.remove(key)
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
我试着这样做: def on_press(key): #检查按键何时按下 if key == keyboard.KeyCode(char='1'): # 检查'1'键是否被按下 t = threading.Thread(目标=执行1) t.start() t.join() 当前.add(键)
对于所有的执行,但还有另一个问题,当它到达 pyautogui.typewrite("111") 时,它只是输入了一个字符,但我想快点。这个程序在我只有 1 个执行时有效,但我现在想要其中 6 个,但我找不到解决方案。希望我能很好地解释我的问题并感谢您的帮助,即使我们没有找到任何解决方案。
你需要创建一个监听器,但是你错过了正确的方法。这是一个例子:
import pyautogui
import pynput.mouse
import pynput.keyboard
def center_mouse_on_press(key):
if key == pynput.keyboard.Key.f7:
screen_width, screen_height = pyautogui.size()
center_x, center_y = screen_width / 2, screen_height / 2
pyautogui.moveTo(center_x, center_y)
keyboard_listener = pynput.keyboard.Listener(on_press=center_mouse_on_press)
keyboard_listener.start()
keyboard_listener.join()
当您按F7
时,此代码将鼠标置于屏幕中间