用于控制台输出的 Tkinter 滚动文本小部件

问题描述 投票:0回答:0

我正在使用 TKinter GUI 来控制具有多个设备的系统。我想使用 tkinter scrolledText 小部件将 python 控制台输出到 GUI 窗口。为此,我使用了一种带有类的方法,这是我从 stackoverflow 中看到的(如下代码所示)。一切正常,在 GUI 小部件中获取日志输出和打印输出。 但是在我使用回车符(print('\x1b[2K', end=""))的特定情况下,在 while 循环中查看设备的更新输出,小部件的输出与预期不同。现有的行不会被清除,字符 '\x1b[2K' 也会按原样打印。但是当我使用输出 t 控制台时,一切都很好。我需要做些什么才能在 scrolledText 小部件中拥有相同的控制台视图吗?

class PrintLoggertoGUI(object):  

    def __init__(self, textbox): 
        self.textbox = textbox  

    def write(self, text):
        self.textbox.configure(state="normal")  
        self.textbox.insert("end", text) 
        self.textbox.see("end")  
        self.textbox.configure(state="disabled") 

然后在 GUI 类的 init 中添加代码:

        self.logout=ScrolledText(self.__window, height=10, width=120,      font=("Times New Roman", "10", "normal"))
        self.logout.place(x=10,y=750)   
        logger = PrintLoggertoGUI(self.logout)
        sys.stdout = logger
        sys.stderr = logger
python-3.x tkinter ipython spyder tkinter-scrolledtext
© www.soinside.com 2019 - 2024. All rights reserved.