[英]progress bar in python
我在tkinter窗口中創建了令牌,該令牌每10秒更改一次值。 我想改善它並添加進度條。 我了解現成的庫,但是我想使用我的個人代碼。 我的問題是如何減慢循環速度,以便根據循環進度等將當前值傳送到字符串變量,並在一秒鍾后將另一個值傳送給我。我的代碼僅需要此“停止器”。 我可以使用10個不同的函數,而只能觸發after(),但它看起來並不好,並且一段時間后我的程序也會崩潰。
def count(self):
k =[" l", " l", " l"," l"," l"," l"," l"," l"," l"," l"]
for x in range(9,0,-1):
self.test_var.set(k[x]*x)
編輯:這是一種通用方法,應該給出如何解決此問題的想法。 它包含所有必要的部分,但是必須在代碼的正確位置實現。
為了確保tkinter窗口在更新階段不會凍結,您必須在另一個線程中進行進度條更新。
要在一定時間后重復調用該方法,可以使用time.sleep()
方法和遞歸方法一次又一次地調用自身。
import threading
import time
def change_progressbar(bar):
# If there is more progress bar points to display, then do it
if bar > 0:
print(bar * ' l') # Change your var here instead of printing
time.sleep(10) # Wait 10 seconds
change_progressbar(bar - 1) # Call itself again with one less point in a progress bar
# Let's call a method in new thread, with argument bar=10, which
# defines how many progress bar points there will be at start.
progressbar_thread = threading.Thread(target=change_progressbar, args=[10])
progressbar_thread.start()
# Output:
# l l l l l l l l l l
# l l l l l l l l l
# l l l l l l l l
# l l l l l l l
# l l l l l l
# l l l l l
# l l l l
# l l l
# l l
# l
您正在尋找的“停止器”是time.sleep()
sleep函數需要一個參數,即等待的秒數。 也可以是0.5的浮點數
您可以這樣使用它:
import time
while True:
time.sleep(1)
print("One second has passed")
此代碼將每秒打印一些內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.