Python TKinter 连续睡眠(或之后)
Python TKinter Consecutive Sleeps (or afters)
我的(我会说)相当简单的代码有困难。我的目标:我想创建一个应用程序,它接受单行 .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
不会像 time.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
我的(我会说)相当简单的代码有困难。我的目标:我想创建一个应用程序,它接受单行 .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
不会像 time.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