Tkinter重定向标准输出因KeyError崩溃:“无”

时间:2018-11-06 02:46:06

标签: python tkinter stdout

我得到了这个看起来很奇怪的问题,有时我的tkinter应用程序因KeyError崩溃:“无”。这非常不稳定:(

这是我的重定向课程,我刚刚从互联网上跟进了其他一些人,对此我不太了解。

此代码由我的串行监视器调用,该监视器基本上打印出接收到的数据。

  

文件“ D:\ work \ tools \ eclipseWorkspace \ myDemo \ mySerialPort.py”,行   119,在readSerial
中   打印serBuffer
  在第56行的“ D:\ work \ tools \ eclipseWorkspace \ myDemo \ mySerialPort.py”文件中   写       self.widget.winfo_toplevel()。update()

     

文件“ C:\ Python27 \ lib \ lib-tk \ Tkinter.py”,第954行,     在winfo_toplevel       'winfo','toplevel',self._w))     文件“ C:\ Python27 \ lib \ lib-tk \ Tkinter.py”,第1200行,

     

nametowidget w = w.children [n]

     

KeyError:“无”

class Logger(object):
    def __init__(self, widget, tag="stdout"):
        self.widget = widget
        self.tag = tag
        self.file = open("message.log","w")

    def write(self, msg):
        if msg == None:
            return
        self.widget.configure(state="normal")
        self.widget.insert("end", msg, (self.tag,))
        self.widget.configure(state="disabled")
        self.widget.see(END)
        self.widget.winfo_toplevel().update()
        self.file.write(msg)

    def flush(self):
        self.file.flush()

1 个答案:

答案 0 :(得分:0)

我希望有人能找出根本原因,目前我的解决方案是KeyError除外,我也尝试了Jason的建议,所以我当前的代码如下:

try:
    self.widget.update()
except KeyError:
    pass