У меня есть программа, которая тянет и отображает несколько значений обновления. У меня есть кнопка, которая вручную перезагружает необходимую информацию. Моя конечная цель - создать текстовое поле, в котором я могу ввести значение, и перезагружать программу каждые x
секунд. Моя проблема возникает при установке нового значения интервала цикла.
Ниже приведен основной пример проблемы, с которой я столкнулся:
import tkinter as tk
import datetime
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
reloadTimer=tk.Entry(root)
reloadTimer.pack(side=tk.LEFT)
reloadTimer.insert(10,10)
def masterReload():
print("LOADING " + str(datetime.datetime.now()))
parent.after(int(reloadTimer.get())*1000, masterReload)
masterReloadButton = tk.Button(root, text='Set', command=lambda:masterReload())
masterReloadButton.pack()
masterReload()
if __name__ == "__main__":
root = tk.Tk()
MainApplication(root).pack()
root.mainloop()
Моя проблема в том, что каждый раз, когда я нажимаю masterReloadButton
, запускается новый «цикл перезагрузки».
Например:
Это вывод, прежде чем я нажимаю какие-либо кнопки. Интервалы между циклами составляют ~ 10 секунд.

Это вывод после того, как я нажму masterReloadButton
, примерно 5 секунд в цикле. Теперь одновременно происходит две петли с смещением около 5 секунд. Он делает захват нового значения цикла, но он также порождает новый цикл полностью.

Мне нужна кнопка «установить», потому что в противном случае новое значение таймера будет получено только после перезагрузки. Если кто-то введет очень большое число, потребуется много времени, прежде чем программа примет новое значение.
Мне кажется, что каждый раз, когда я нажимаю на кнопку, создается новый masterReload()
процесс. Мне нужно либо каждый раз уничтожать процесс, либо реорганизовывать мой код, чтобы этого не происходило, но я не уверен, как это сделать.
Заранее спасибо.