【问题标题】:About tkinter scrolledtext关于 tkinter scrolledtext
【发布时间】:2021-07-28 03:10:52
【问题描述】:

我在使用 Tkinter 时遇到如下问题:

下面的简单代码是测试滚动文本小部件。我需要意识到的是,我希望结果连续(增量?)显示在滚动文本小部件中,我可以清楚地知道哪个步骤正在处理。但不要等待整个迭代结束。总迭代次数少(小于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()

【问题讨论】:

    标签: python tkinter iteration


    【解决方案1】:

    你可以使用.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()
    

    【讨论】:

    • 哇,它几乎可以工作了.....是否可以使光标(焦点)始终出现在末尾?
    • 你想把光标放在最后吗? @TaoZeng​​span>
    • 是的,滚动条不随进程移动。我必须手动将它移到最后才能看到它是哪一步。
    • 最欢迎@TaoZeng,考虑接受和支持;-)的答案
    • 是否可以将另一个文件中任何变量的结果显示到滚动文本中。我的问题是:图片我有两个 python 文件。 py1.py 是仅包含滚动文本小部件的主文件。而我需要意识到的是,我希望 py2.py 中任何变量的结果有意识地显示在 scrolledtext 小部件(嵌入在 py1.py 中)中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多