根據物件,進度條僅在for回圈完成時顯示。相反,我希望它逐步顯示回圈的進度。
from tkinter import ttk
from tkinter import *
import time
def inner_loop_func():
k = 0
for i in range(10**5):
k=k 1
print("k: ",k)
def loop_fun():
p = ttk.Progressbar(root, orient="horizontal", length=300, mode="determinate", takefocus=True, maximum=100)
p['value'] = 0
p.pack()
end = 100
for i in range(end):
start(end,p)
inner_loop_func()
print(i," of ", end)
def start(end,p):
if p['value'] < 300:
p['value'] = (300/end)
else:
print("finish")
if __name__ == "__main__":
root = Tk()
loop_fun()
root.mainloop()
uj5u.com熱心網友回復:
在 loop_fun 函式中使用 p.update() 進行回圈:
for i in range(end):
start(end, p)
inner_loop_func()
print(i, " of ", end)
p.update()
uj5u.com熱心網友回復:
我認為您需要將進度條放在執行緒上。我過去在守護執行緒上做過類似的事情。但是我將模式更改為,indeterminate以便在功能完成時停止進度。然后我只是呼叫了執行緒來代替你的函式,我希望這會有所幫助。
from tkinter import ttk
from tkinter import *
import time
import threading
def loop_fun_thread():
run_thread = threading.Thread(target=loop_fun)
run_thread.daemon = True
run_thread.start()
def inner_loop_func():
k = 0
for i in range(10**5):
k=k 1
print("k: ",k)
def loop_fun():
p = ttk.Progressbar(root, orient="horizontal", length=300, mode="indeterminate", takefocus=True, maximum=100)
p['value'] = 0
p.pack()
end = 100
for i in range(end):
start(end,p)
inner_loop_func()
print(i," of ", end)
def start(end,p):
if p['value'] < 300:
p['value'] = (300/end)
else:
print("finish")
if __name__ == "__main__":
root = Tk()
loop_fun_thread()
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/479816.html
上一篇:如何在函式中發送字串
