我正在使用 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