Почему time.sleep не может ждать больше 1 минуты? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь создать приложение с tkinter, которое будет автоматически щелкать на моем рабочем столе в определенный час, я знаю, что для этого лучше использовать формы, но с Tkinter это единственное, что сработало до сих пор. Я почти заканчиваю, но функция time.sleep не может ждать более 30 секунд, я запускаю программу, после чего окно Tkinter перестает работать примерно на 1 минуту и ​​ничего не делает. Я уже пытался использовать time.wait, но случилось то же самое, я читал, что функции time.sleep принимают любое число как действительное, так почему это происходит?

win = Tk()
win.title('autoclass.enter V1')
win.geometry('500x300')

aroh= Entry(win, width=30)
aroh.place(x=178, y=170)
hora= Entry(win, width=30)
hora.place(x=178, y=100)
aahg = datetime.now()

def chronus():
    MB = int(aroh.get())
    HB1 = int(hora.get())
    HB = HB1 * 60
    won = aahg.time().strftime('%H:%M')
    own = str(won)
    nwo = own.split(':')
    xa,xo = nwo[0],nwo[1]
    HA1 = int(xa)
    MA = int(xo)
    HA = HA1 * 60
    print(HA)
    print(MA)
    M1 =(HA + MA)
    M2 =(MB + HB)
    print(M1/60)
    print(M2/60)
    M3 = M2 - M1
    print('M1=', M1)
    print('M2=', M2)
    if M3 < 0:
        M4 = (M2 - M1) + 1440
        print('M4=', M4)
        M4I = M4 * 60
        time.sleep(M4I)             #here is the time.sleep problem
        pyautogui.click(100, 100)
        time.sleep(1)
        pyautogui.moveTo(200, 200, duration = 1) 
        pyautogui.click(200, 200)
    elif M3 > 0:
        print('M3=', M3)
        M3I = M3 * 60
        time.sleep(M3I)              # or here
        pyautogui.click(100, 100)
        time.sleep(1)
        pyautogui.moveTo(200, 200, duration = 1) 
        pyautogui.click(200, 200)

myLabel6 = Label(win, text='hout that it is going to work')
myLabel6.place(x=195, y=78)
button = Button(win, text='start', command=chronus)
button.place(x=50, y=80)
win.mainloop() 

1 Ответ

0 голосов
/ 06 августа 2020

Окно Tkinter перестает работать примерно на 1 минуту и ​​ничего не делает.

time.sleep засыпает поток, в котором выполняется программа. Значит, это блокирует вашу программу.

проверьте следующий ответ: { ссылка }

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