我正在使用tkinter,我正在尝试将字符串[在本例中为原始文件]与文本小部件中的文本进行比较。这是函数和我调用函数的地方:
def checkText():
if(text.get("1.0", "end-1c") != currentText):
print("Changed")
root.after(1000, checkText())
我打电话的地方:
root.after(1000, checkText()) #after 1 second, check text to see if it has changed
它返回错误:
File "main.py", line 65, in checkText
if(text.get("1.0", "end-1c") != currentText):
RuntimeError: maximum recursion depth exceeded
除了数百个'File“main.py”,第65行,在checkText'
中我可能会忽略一些显而易见的事情,但感谢他们的帮助。
这些是函数在程序中使用或引用的唯一位置,但只是在这里,这里定义了currentText:
myfile = tkFileDialog.askopenfile(title='Open a file', mode='r')
text.delete('1.0', END)
loadedfile = myfile.read()
currentText = myfile.read()
loadedFile直接放入文本小部件并且工作正常,因此我假设currentText应该与小部件中的loadedFile / text相同。
感谢。
编辑:格式化,我也意识到我可以说currentText = loadedFile
来简化它,但我保留原始代码的问题
编辑:获取文本的整个功能
def fileOpen(textView):
try:
myfile = tkFileDialog.askopenfile(title='Open a file', mode='r')
text.delete('1.0', END)
loadedfile = myfile.read()
currentText = loadedFile
currentFile = myfile.name
currentName = currentFile
currentName = currentName.rsplit('/', 1)[-1] #get the 'name.ext' part only
currentName = currentName.rsplit('\\', 1)[-1] #incase you're using windows
currentFileButton.config(text = currentName)
myfile.close()
textView.insert("end", loadedfile)
except:
return
def saveAs(): #define how to save files
try:
global text
t = text.get("1.0", "end-1c")
saveLocation = tkFileDialog.asksaveasfilename()
file1 = open(saveLocation, "w+")
file1.write(t)
file1.close()
except:
return
后:
text = Text(textFrame, bd=0, bg=color, fg=textColor) #make text editor box