我是Python新手。我正在编写一个自动点击器,它应该响应“开始”和“停止”按钮,并使用“6”和“7”热键执行相同的功能。
from tkinter import *
import mouse
import keyboard
import time
window = Tk()
window.title('clicker')
window.wm_attributes('-topmost', True)
window.geometry('250x250')
window.resizable(False, False)
def start():
btn_stop['state'] = 'active'
btn_start['state'] = 'disabled'
while btn_stop['state'] == 'active':
mouse.click()
window.update()
time.sleep(0.01)
def stop():
btn_start['state'] = 'active'
btn_stop['state'] = 'disabled'
keyboard.add_hotkey('7', stop)
keyboard.add_hotkey('6', start)
btn_start = Button(window, text='Старт', command=start, state='active')
btn_start.place(width=70, y=120, x=90)
btn_stop = Button(window, text='Стоп', command=stop, state='disabled')
btn_stop.place(width=70, y=60, x=90)
window.mainloop()
使用按钮,程序可以正常工作,但是如果您通过热键“6”启动它,则无法使用“7”键停止它,只能通过“停止”按钮来完成。此外,如果您通过“开始”按钮启动程序,那么通过“7”键它会平静地停止。
我想(我可能是错的,因为我不知道所有的微妙之处)由于某种原因keyboard.add_hotkey它不会响应任何其他键,直到上一个命令完成(并且我在那里有一个无限循环)。
也许我错了,但我请求你的帮助。我不需要保存这个特定的代码模型,最主要的是程序以相同的方式工作并响应按键和按钮。我希望得到回应。
我的问题的答案:很偶然,我遇到了一个模块
threading,它允许您(同时)执行多线程任务。一切都像剥梨一样简单,我稍微编辑了代码,一切都像发条一样工作。结果很滑稽;直到最后我都不想问这个问题,希望自己能找到解决办法。最后,就发生了这样的事情。