簡體   English   中英

python中的進度條

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM