我是Tkinter和python的新手。我一直在试验我制作的记事本脚本。我正在研究find / replace命令。但我没有运气。这是我到目前为止所尝试的:
def replace():
def replaceall():
findtext = str(find.get(1.0, END))
replacetext = str(replace.get(1.0, END))
alltext = str(text.get(1.0, END))
alltext1 = all.replace(findtext, replacetext)
text.delete(1.0, END)
text.insert('1.0', alltext1)
replacebox =Tk()
replacebox.geometry("230x150")
replacebox.title("Replace..")
find = Text(replacebox, height=2, width=20).pack()
replace = Text(replacebox, height=2, width=20).pack()
replaceallbutton = Button(replacebox, text="Replace..", command=replaceall)
replaceallbutton.pack()
(这只是我为替换命令定义的函数)
'text'变量位于大画布上,其中包含菜单和主文本小部件。
感谢任何帮助 到目前为止,我一直在2.7.8中创建这个记事本,因此Tkinter导入是'Tkinter'。
我正在拍摄的是让第一个框有要查找的文本,第二个框有要替换的文本。按下替换按钮后,函数replaceall()应该开始。
我的功能是否有任何明显的错误,或者它是否存在严重缺陷?任何帮助表示赞赏。
答案 0 :(得分:1)
最明显的错误是您正在创建Tk
的第二个实例。如果需要弹出窗口,则应创建Toplevel
的实例。您应始终只有一个Tk
运行实例。
第二个问题与您使用Text
小部件进行查找和替换输入的事实有关。当您使用第二个索引END
进行获取时,无论用户是否输入了该字符串,您获取的字符串将始终具有换行符。如果您只想要用户输入的内容,请使用" end-1c" (结束减去一个字符)。
最后,没有理由获取所有文本,替换字符串,然后重新插入所有文本。只有在文本小部件中没有格式化或嵌入的小部件或图像时,这才有效。文本小部件有一个search
命令,可以搜索模式(字符串或正则表达式),您可以使用返回的信息用替换文本替换找到的文本。