Tkinter:重定向stdout到只读文本
我正在用Python的Tkinter库创建一个图形用户界面(GUI)。
我已经可以把输出信息(stdout)重定向到一个文本框里,但不太清楚怎么让这个文本框变成只读的,也就是用户不能在里面编辑内容。
到目前为止,重定向输出信息的代码如下:
class IORedirector(object):
'''A general class for redirecting I/O to this Text widget.'''
def __init__(self,text_area):
self.text_area = text_area
class StdoutRedirector(IORedirector):
'''A class for redirecting stdout to this Text widget.'''
def write(self,message):
self.text_area.insert("insert", message)
self.text_box = Text(self, wrap = 'word')
self.text_box.grid(column = 0, row = 1, columnspan = 2, sticky = 'NSWE', padx = 5, pady = 5)
sys.stdout = StdoutRedirector(self.text_box)
1 个回答
1
其实这件事非常简单。
只需要在StdoutRedirector类里面加上两行代码:
class StdoutRedirector(IORedirector):
'''A class for redirecting stdout to this Text widget.'''
def write(self,message):
self.text_area.config(state = "normal")
self.text_area.insert("insert", message)
self.text_area.config(state = "disabled")