簡體   English   中英

在 Python 和 Tkinter 中使用 time.sleep()

[英]Use of time.sleep() in Python with Tkinter

我有一個小程序(一個更大項目的一部分)來顯示 10 個隨機數,但延遲很小。 當我在終端中運行它時它自己的功能起作用,但是當我嘗試在 Tkinter 中顯示它時它只顯示隨機數但沒有時間延遲? (如果我使用按鈕,每次都會出現一個隨機數?)


import random, time
import tkinter as tk

window = tk.Tk()
window.title("Cirkus Arcus tidsmaskine!")
window.geometry("800x800")

#---FUNCTIONS----

def  random_number():
    counter = 0      
    while counter<10:
        num = random.randint(1000,3000)         
        num10 = int(num / 10) * 10             
        time.sleep(0.2) 
        counter = counter + 1          
        return (num10)

---顯示----

def number_display2():
    randomNumber = random_number()

    # This creates a text field
    number_display2 = tk.Text(master=window, height=10, width=30)
    number_display2.grid(column=0, row=4)
    number_display2.insert(tk.END, randomNumber)

- -紐扣 - -

button2 = tk.Button(text="Prøv også mig", command=number_display2)
button2.grid(column=1, row=2)

window.mainloop()

time.sleep() 的使用會阻塞程序。

文檔中 time.sleep() 的定義是:

暫停執行調用線程給定的秒數。

如果你想在 Tkinter 中延遲你可以使用 after() 方法,

.after(delay, callback=None) 是為所有 tkinter 小部件定義的方法。 此方法只是在給定的延遲(以毫秒為單位)之后調用函數回調。 如果沒有給出函數,它的作用類似於 time.sleep (但以毫秒而不是秒為單位)

你必須使用:

window.after(10000)  # 10000 means 10s

當涉及到 Tkinter 時,我建議使用“after”方法。 關於這個話題還有其他幾個問題。 請注意,延遲以毫秒為單位,而不是time.sleep()使用的秒數

import tkinter as tk
import random
root=tk.Tk()
def random_number():
    counter = 0   
    while counter<10:
       num = random.randint(1000,3000)         
       num10 = int(num / 10) * 10             
       print(counter)
       print(num10)
       counter = counter + 1
    return(num10)
root.after(2000,random_number)
root.mainloop()

這有效,但我的內核在完成后繼續運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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