Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TKinter连续睡眠(或之后)_Python_Tkinter_Python Multithreading_Sleep - Fatal编程技术网

Python TKinter连续睡眠(或之后)

Python TKinter连续睡眠(或之后),python,tkinter,python-multithreading,sleep,Python,Tkinter,Python Multithreading,Sleep,我觉得我的代码很简单。我的目标是:我想创建一个应用程序,它只需要一行.txt文件,然后将它们分别添加到一个文本框(TKinter)中,间隔几秒钟 def startRoutine(): file = open(filename, "r") all_lines_variable = file.readlines() for i in range(0, len(all_lines_variable)):

我觉得我的代码很简单。我的目标是:我想创建一个应用程序,它只需要一行.txt文件,然后将它们分别添加到一个文本框(TKinter)中,间隔几秒钟

    def startRoutine():
        file = open(filename, "r")
        all_lines_variable = file.readlines()
        for i in range(0, len(all_lines_variable)):
             root.after(1000, t.insert(tk. END, all_lines_variable[i]))
(t是文本框,filename打开目录)

我想我正在做的是:等一下,然后将字符串添加到文本框中。重复下一行,直到文本中没有任何行

我实际做的是:每行等待1秒,然后打印所有行。 因此,我的问题是:如何真正让程序在插入之间等待


多谢各位

after
不会像
时间那样暂停程序。sleep
会暂停程序,它只是安排稍后运行并继续运行。因此,您的所有线路都计划在1000毫秒内运行。要执行所需操作,您可以使用
i
变量为每行提供相隔1000毫秒的时间:

from functools import partial

def startRoutine():
    file = open(filename, "r")
    all_lines_variable = file.readlines()
    for i in range(0, len(all_lines_variable)):
         root.after(1000 * i, partial(t.insert, tk.END, all_lines_variable[i]))
         
或者(更常见)您可以创建第二个函数作为循环,该函数将等待调用,以安排下一个循环:

def loop(lines):
    if lines:
        t.insert(tk.END, lines.pop(0))
        root.after(1000, loop, lines)
        
def startRoutine():
    file = open(filename, "r")
    all_lines_variable = file.readlines()
    loop(all_lines_variable) # start loop