我有一个小程序(一个大项目的一部分)来显示10个随机数,且延迟很小。 当我在终端中运行该功能时,它会自动运行;但是当我尝试在Tkinter中显示该功能时,它只会显示随机数,而没有时间延迟? (如果我使用Button,每次都会出现一个随机数吗?)
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()
答案 0 :(得分:0)
使用time.sleep()会阻止程序。
time.sleep()在文档中的定义是:
以给定数目的中断执行调用线程 秒。
如果要延迟Tkinter,可以使用after()方法,
.after(delay,callback = None)是为所有tkinter定义的方法 小部件。此方法仅在 给定延迟(以毫秒为单位)。如果未提供任何功能,则其作用类似于 time.sleep(但以毫秒为单位,而不是秒)
您必须使用:
window.after(10000) # 10000 means 10s
答案 1 :(得分:0)
对于Tkinter,我建议使用“之后”方法。关于此主题还有其他几个问题。请注意,延迟以毫秒为单位,而不是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()
这行得通,但是我的内核在完成后仍然可以运行