import time
import pyautogui
import PySimpleGUI as sg
import threading
# 全局变量,用于通知后台线程退出
exit_event = threading.Event()
def worker_thread(values):
wait_time = float(values['_WAIT_TIME_'])
key = values['_KEY_']
while not exit_event.is_set():
pyautogui.press(key)
time.sleep(wait_time)
def main():
layout = [
[sg.Text('等待时间(秒):')],
[sg.Input(key='_WAIT_TIME_', default_text='0.6')],
[sg.Text('按键:')],
[sg.Input(key='_KEY_', default_text='down')],
[sg.Button('开始'), sg.Button('退出')]
]
window = sg.Window('自动按键', layout, location=(300, 20))
while True:
event, values = window.read()
if event in (None, '退出'):
# 设置退出标志,通知后台线程退出
exit_event.set()
break
elif event == '开始':
# 启动后台线程并传递 values 变量
exit_event.clear()
threading.Thread(target=worker_thread, args=(values,)).start()
window.close()
if __name__ == '__main__':
main()
引入线程,避免了进入死循环点击按键的时候,单击退出按钮程序假死
程序运行界面如下:
运行时间默认0.6秒,默认按键为下箭头