用户界面 - python- 在 tkinter 的列表框打印之间使用延迟



我只想在GUI上包含的列表框上的每次打印之间进行一次时间延迟。到目前为止,我还没有得到一个结果。我试着用时间.sleep()。。。以及之后的方法。

这是我的代码:

from Tkinter import *
def func() :
    i = int (e.get())
    for x in range (0,i):
        listbox.insert (END, i)
        i-=1
master = Tk()
master.title("hi") 
e=Entry (master )
e.pack()
listbox = Listbox(master)
listbox.pack()
b = Button(master, text="get", width=10, command=func)
b.pack()
mainloop()

使用GUI时,应始终使用after而不是睡眠。如果你睡觉,GUI将停止更新,所以你不会得到刷新的显示,也不会像你希望的那样工作。

要在代码中获得所需的结果,您有几个选项。其中之一是使用after来调用插入到Listbox中的函数,并为每次迭代向其传递一个新的参数。

首先,您必须修改Button命令,以便使用lambda表达式将初始参数传递给函数:

b = Button(master, text="get", width=10, command=lambda: func(int(e.get())))

接下来,像这样构建你的函数:

def func(arg):
    listbox.insert(END, arg)      #insert the arg
    arg -= 1                      #decrement arg
    master.after(1000, func, arg) #call function again after x ms, with modified arg

注意:如果arg小于0,您还需要使函数return,否则它将永远运行;)

相关内容

  • 没有找到相关文章

最新更新