Кнопка tkinter в цикле while, не использующая mainloop: как она может работать с фиксированными интервалами? - PullRequest
0 голосов
/ 07 октября 2019

Ответ на этот вопрос может быть о tkinter или параллельных циклах. Я не уверен, какое решение будет лучшим. Мне нужен твой совет.

У меня есть некоторое время True, который проходит бесконечноКаждый цикл занимает около 5 секунд или более, и я хотел создать кнопку с графическим интерфейсом (кнопки пропуска и остановки_скрипта). Если пользователь нажимает кнопку пропуска, он пропускает текущий цикл while и переходит к следующему циклу while, пока не будет нажата кнопка «stop_skip». Таким образом, кнопка пропуска будет работать как «продолжить» в цикле.

Поскольку каждый цикл занимает около 5 секунд, я хочу, чтобы он часто проверял переменную в цикле. Я обнаружил, что tk.after () может работать каждые x миллисекунд, и некоторые люди упоминали tk.update_idletasks () и tk.update (). Я попробовал их, но они просто показывают окно, когда начинается цикл, и останавливаются на оставшиеся 5 секунд. Если ничто не может работать так (повторное выполнение функции с интервалами в цикле while), я, вероятно, добавлю условия if несколько раз в течение цикла while.

Сценарий, который я хочу, может выглядеть следующим образом:

show_tk_gui()
while True:
    check_tk_if_skip_button_clicked(interval==1000) #if clicked, continue to the next while loop until 'stop_skip' button is clicked. 
    performing_5_sec_calculation()

Есть ли способ сделать это возможным? Не допускается использование опции GUI.

...