プログレスバーを作成するPythonコードがあります。 Tkinter環境は、Gui関数でプログレスバーとともに作成され、スレッドとして起動されます。その後、他のスレッドではプログレスバーの値を計算しますが、プログレスバーの新しい値でGuiスレッドを更新する方法はわかりません。私のコードは次のとおりです:スレッドのプログレスバーを更新する
import tkinter as tk
from tkinter import ttk
import thread
def Gui():
root = tk.Tk()
root.geometry('450x450')
root.title('Hanix Downloader')
button1 = tk.Button(root, text='Salir', width=25,command=root.destroy)
button1.pack()
s = ttk.Style()
s.theme_use('clam')
s.configure("green.Horizontal.TProgressbar", foreground='green', background='green')
mpb = ttk.Progressbar(root,style="green.Horizontal.TProgressbar",orient ="horizontal",length = 200, mode ="determinate")
mpb.pack()
mpb["maximum"] = 3620
mpb["value"] = 1000
root.mainloop()
def main():
while True:
#Calculate the new value of the progress bar.
mpb["value"] = 100 #Does not work
root.update_idletasks()#Does not work
#Do some other tasks.
if __name__ == '__main__':
thread.start_new_thread(Gui,())
thread.start_new_thread(main,())
エラーはmpbとルートが存在しないことです。前もって感謝します。
このサイトには、tkinter、スレッド、およびプログレスバーに関する多くの質問と回答があります。あなたはこの質問をする前に研究をしていませんか?また、コード例でインデントを修正する必要があります。 –
はい、私はいくつかのポストと質問を見ましたが、私はそれを解決することができません、申し訳ありません...私はこれで5時間を費やしました。 – Andermutu
コンソールで実行すると、エラーメッセージ(トレースバック)が表示されましたか?常に問題を提示してください。 'mpb'と' root'は 'Gui()'にのみ存在し、 'main()'には存在しないので、エラーが発生するでしょう – furas