Я создал небольшой графический интерфейс, используя Tkinter. При щелчке по нему некоторые данные записываются в Excel.
Чтобы показать прогресс, я добавил индикатор выполнения, но, поскольку процесс требует значительных ресурсов, индикатор выполнения отображается только в конце. Поэтому я использовал многопоточность, как показано.
В приведенной ниже функции Main я инициализировал индикатор выполнения в другом потоке, но хочу обновить текущее значение задачи в функции Start.
Из-за этой строки:
progressbar.Start()
он просто постоянно работает без какого-либо отношения к текущему прогрессу.
def Start():
x = 0
progressbar["value"] = x
for idx, val in enumerate(rows):
region_url = val[1]
if (model_url != '-'):
url = 'http://testurl/' + region_url
x = x + 1
if (x > 4):
break
# Main
if __name__ == '__main__':
window = Tk()
new = progress(window)
# Add a grid
mainframe = Frame(window)
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100 , padx = 150)
# DropDown
popupMenu = OptionMenu(mainframe, tkvar, *regionList)
Label(mainframe, text="Region").grid(row = 1, column = 0)
# Button
btnSubmit = Button(mainframe, text= "Execute",command=StartScrap).grid(row = 2, column = 18)
popupMenu.grid(row = 2, column =0)
# Progress Bar
progressbar = ttk.Progressbar(window, orient = HORIZONTAL,length=300, mode = 'indeterminate')
progressbar.pack()
t = threading.Thread()
progressbar["maximum"] = 4
progressbar.start()
window.mainloop()