关于 tkinter 滚动文本
About tkinter scrolledtext
我在使用Tkinter时遇到如下问题:
下面的简单代码是用来测试scrolledtext widget的。我需要意识到的是,我希望结果连续(递增?)显示在 scrolledtext 小部件中,在那里我可以清楚地知道正在处理哪个步骤。但不要等待整个迭代结束。当迭代总数较小(小于10^5)时还可以,但如果数量很大(例如10^8或10^10),则需要等待很长时间。谁能给我一些建议?
# -*- coding: utf-8 -*-
import tkinter as tk
win = tk.Tk()
text_area = tk.scrolledtext.ScrolledText(win)
for i in range(10000000):
text_area.insert(tk.END, "step " + str(i) + "\n")
text_area.see(tk.END)
text_area.pack()
win.mainloop()
您可以使用 .after()
:
import tkinter as tk
from tkinter import scrolledtext
win = tk.Tk()
def add_to_frame(i):
if i<10000000:
text_area.insert(tk.END, "step " + str(i) + "\n")
text_area.see(tk.END)
win.after(1,add_to_frame,i+1)
text_area = scrolledtext.ScrolledText(win)
text_area.see(tk.END)
text_area.pack()
i=0
win.after(1,add_to_frame,i)
win.mainloop()
我在使用Tkinter时遇到如下问题:
下面的简单代码是用来测试scrolledtext widget的。我需要意识到的是,我希望结果连续(递增?)显示在 scrolledtext 小部件中,在那里我可以清楚地知道正在处理哪个步骤。但不要等待整个迭代结束。当迭代总数较小(小于10^5)时还可以,但如果数量很大(例如10^8或10^10),则需要等待很长时间。谁能给我一些建议?
# -*- coding: utf-8 -*-
import tkinter as tk
win = tk.Tk()
text_area = tk.scrolledtext.ScrolledText(win)
for i in range(10000000):
text_area.insert(tk.END, "step " + str(i) + "\n")
text_area.see(tk.END)
text_area.pack()
win.mainloop()
您可以使用 .after()
:
import tkinter as tk
from tkinter import scrolledtext
win = tk.Tk()
def add_to_frame(i):
if i<10000000:
text_area.insert(tk.END, "step " + str(i) + "\n")
text_area.see(tk.END)
win.after(1,add_to_frame,i+1)
text_area = scrolledtext.ScrolledText(win)
text_area.see(tk.END)
text_area.pack()
i=0
win.after(1,add_to_frame,i)
win.mainloop()