Python tkinter文本小部件插入速度减慢

Python tkinter文本小部件插入速度减慢,python,text,tkinter,widget,tk,Python,Text,Tkinter,Widget,Tk,我对tkinter文本小部件有问题。基本上,我正在尝试将输出写入两个不同的文本小部件。随着时间的推移,框的输出速度会减慢,文本开始在多行上输出 我这里有一些python代码,如果您想观察的话,可以运行它们 from tkinter import * import sys import time from threading import Thread from threading import Timer from multiprocessing import Process, Queue im

我对tkinter文本小部件有问题。基本上,我正在尝试将输出写入两个不同的文本小部件。随着时间的推移,框的输出速度会减慢,文本开始在多行上输出

我这里有一些python代码,如果您想观察的话,可以运行它们

from tkinter import *
import sys
import time
from threading import Thread
from threading import Timer
from multiprocessing import Process, Queue
import queue
import serial



threadqueue = queue.Queue()
processqueue = Queue()
data = True

class MainGui():

    def __init__(self):
        self.root = Tk()
        self.root.title("Test")
        self.root.geometry("1280x1024")
        self.root["bg"] = "gray55"
        self.o_box()
        self.f_o_data_box()
        self.read_serial()
        self.root.mainloop()


    def o_box(self):
        self.serialbox = Text(self.root,
                          bg="black",
                          fg="white",
                          height=10,
                          width=105)
        self.serialbox.place(x=10, y=780)

    def f_o_data_box(self):
        self.faultdata = Text(self.root,
                          bg="gray93",
                          fg="red",
                          height=61,
                          width=65)
        self.faultdata.place(x=780, y=13)



    def run(self):
        pass



    def update_gui(self):
        self.root.update()


    def read_serial(self):
        try:
            self.serialbox.insert(CURRENT, str(processqueue.get()).encode('ascii'))
            self.faultdata.insert(CURRENT, str(processqueue.get()).encode('ascii'))
            self.serialbox.see("end")
            self.faultdata.see("end")
            self.root.after(10, self.read_serial)
        except queue.Empty:
            self.root.after(100, self.read_serial)






def run():

        ser = serial.Serial()
        while 1:
            processqueue.put(str("Hello").encode('ascii'))
            continue


def main():
    try:

        SerialProcess = Process(target=run)
        SerialProcess.start()

        MainWindow = MainGui();

        MainWindow.run();

        SerialProcess.join()


    except KeyboardInterrupt:
        sys.exit(1)

if __name__ == "__main__":
    main()
我的猜测是,出于某种原因,多个文本框被实例化在彼此的顶部或其他地方。。。因此,随着时间的推移,输出速度变慢,输出行为变得奇怪。但我找不到这种行为的根源。有谁能解释为什么会发生这种情况,或者我的问题在哪里?我尝试查看tk()、mainloop()的行为,并尝试在代码中查找重复调用新窗口的实例。。。这些我都没注意到


我对python相当陌生,因此非常感谢您的帮助

我认为文本小部件有性能问题,因为它的行很长。插入的数据中是否有换行符?在这个程序中似乎没有。现在没有。有更好的方法可以使用吗?没有适合显示数千个字符而不换行的tkinter小部件。这根本不是它设计的目的。我有一个版本,它使用换行符,同样的行为。我找不到任何文档表明它不能做任何事情,因此我认为我做得不对。我认为文本小部件有性能问题,行数很长。插入的数据中是否有换行符?在这个程序中似乎没有。现在没有。有更好的方法可以使用吗?没有适合显示数千个字符而不换行的tkinter小部件。这根本不是它设计的目的。我有一个版本,它使用换行符,同样的行为。我找不到任何暗示它不能做的文档,所以我认为我做得不对。