Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文本小部件未使用删除功能清除_Python_User Interface_Tkinter - Fatal编程技术网

Python 文本小部件未使用删除功能清除

Python 文本小部件未使用删除功能清除,python,user-interface,tkinter,Python,User Interface,Tkinter,我正在创建一个tkinter gui应用程序,我的一个框架有一个文本小部件,它调用函数并将其输出打印到小部件上。现在我有一个名为“activeAlarmButton”的按钮,它可以正确地打印到小部件上,但在调用clearText()函数时它不会删除内容。我尝试过各种格式的delete函数参数,但运气不好。每次我按下按钮,它都会在旧的下打印相同的输出。我的其他按钮还没有完成,我只想先让这一个开始工作 class logsPage(tk.Frame): def __init__(self, pare

我正在创建一个tkinter gui应用程序,我的一个框架有一个文本小部件,它调用函数并将其输出打印到小部件上。现在我有一个名为“activeAlarmButton”的按钮,它可以正确地打印到小部件上,但在调用clearText()函数时它不会删除内容。我尝试过各种格式的delete函数参数,但运气不好。每次我按下按钮,它都会在旧的下打印相同的输出。我的其他按钮还没有完成,我只想先让这一个开始工作

class logsPage(tk.Frame):
def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)

    activeAlarmButton = tk.Button(self, text = "Active Alarms", width=25, command = lambda: [clearText(), showActiveAlarms()])
    activeAlarmButton.configure(bg = "light yellow")
    activeAlarmButton.grid(column=1, row=1)

    allAlarmButton = tk.Button(self, text = "All Alarms", width=25)
    allAlarmButton.configure(bg = "light yellow")
    allAlarmButton.grid(column=1, row=2)

    backButton = tk.Button(self, text = "Go Back", width=25)
    backButton.configure(bg = "light yellow")
    backButton.grid(column=1, row=3)

    alarmText = tk.Text(self, borderwidth=3, relief="sunken")
    alarmText.configure(font=("Courier", 12), undo=True, wrap="word")
    alarmText.grid(column=2, row = 1, rowspan=3)

    sys.stdout = TextRedirector(alarmText, "stdout")

    self.grid_rowconfigure(0, weight=2)
    self.grid_rowconfigure(4, weight=1)
    self.grid_columnconfigure(0, weight=1)
    self.grid_columnconfigure(3, weight=1)

    self.configure(background='light blue')

    def clearText():
        alarmText.delete('1.0', 'end')
        alarmText.update()



class TextRedirector(object):
def __init__(self, widget, tag="stdout"):
    self.widget = widget
    self.tag = tag

def write(self, str):
    self.widget.configure(state="normal")
    self.widget.insert("end", str, (self.tag,))
    self.widget.configure(state="disabled")

def flush(self):
    pass

问题是
textdirector
类将文本小部件的状态保持为
禁用
。要删除文本,您首先需要执行
textdirector
的操作:将状态设置为
normal
,在文本小部件上执行操作,然后将状态恢复为
disabled

例如:

def clearText():
    alarmText.configure(state='normal')
    alarmText.delete('1.0', 'end')
    alarmText.configure(state='disabled')

当我解决了使代码运行所需的所有问题时,
clearText
对我来说很好。可能是
textdirector
导致了问题。如果无法复制您的问题,我们可能无法提供帮助。请考虑做一个正确的你是正确的,它是TeXTrError,每当我在更改Sy.StdOutt后写入文本窗口时,它会使WIDGET不可编辑,但是如果我键入文本窗口小部件,然后调用明文,它就工作了。我更新了我的帖子以显示TextRedirector类,这很有趣,因为我是从您在另一篇帖子上的评论中获得该类的。我理解它的工作原理,只是在我意识到需要清除文本之前,我并不认为这对我是一个不便,但感谢您的帮助:)