Еще один автокликер в Python, не может сделать запуск / остановку триггера и запуск / паузу для горячей клавиши, нужна идея, чтобы прервать цикл - PullRequest
0 голосов
/ 16 октября 2019

Добрый день,

Я хочу создать простой автокликер в Python, делая неограниченное нажатие левой кнопкой. Я хочу иметь горячую клавишу для запуска / паузы и остановки всего. Я прочитал сотню тем и на этом форуме, но не смог найти именно то, что мне нужно. Основная проблема заключается в том, что я не смог прервать цикл «В то время как» или цикл в диапазоне. Я читал, что такие петли нельзя прерывать. Пожалуйста, помогите

    import pyautogui
import time
from tkinter import *
import sys


import keyboard


window = Tk()

window.title("АВТОКЛИКЕР")
window.geometry('250x70+700+100')  # размер и где будет появляться окно
window.configure(background = "black")


#element = 0
running = False

def leftClick():
    global running
    #running = False
    print(running)
    if running == True:
            lbl4.configure(text= "0")
            #element = 0
            running = False
            print("running False")
            return
    else:

            running = True
            #for element in range (11):
            if running == True:
                    pyautogui.click(interval=0.25)
                    #lbl4.configure(text= element)
                    print("running True")
                    leftClick()

            #while running == True:
            #global element

            #element += 1
            #leftClick(running)


def foo():

    sys.exit()  

lbl0 = Label(window, text="Сделано кликов", bg = "black", fg="white", font=("Arial Bold", 14))
lbl0.grid(column=0, row=0, sticky = W)

lbl1 = Label(window, text="Нажать ' / ' для старта", bg = "black", fg="white", font=("Arial Bold", 14))
lbl1.grid(column=0, row=2)

lbl4 = Label(window, text="0", bg = "black", fg="white", justify= "left", font=("Arial Bold", 14))
lbl4.grid(column=1, row=0, sticky = W)



# btn = Button(window, bg = "black", fg="white", text="ЗАПУСК")
# btn.grid(column=0, row=4)
# btn.bind("<Button-1>", leftClick)

def main():



    keyboard.add_hotkey('/', leftClick)
    keyboard.add_hotkey('F2', foo)
    #keyboard.wait('F4')


if __name__ == '__main__':
    main()
    window.mainloop()

1 Ответ

0 голосов
/ 17 октября 2019

Этот кодовый код решает проблему прерывания цикла. Это именно то, что мне было нужно. Может быть, это будет кому-то полезно

from tkinter import *

master = Tk()

isRun = [False]

def callback():
    if isRun[0]:
        isRun[0] = False
    else:
        isRun[0] = True
        tick()

def tick():
    if not isRun[0]:
        return
    print ("click!")
    master.after(1000, tick)

b = Button(master, text="OK", command=callback)
b.pack()

tick()

mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...