Python TKinter连续睡眠(或之后)
我觉得我的代码很简单。我的目标是:我想创建一个应用程序,它只需要一行.txt文件,然后将它们分别添加到一个文本框(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)):
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