我正在编写一个python文本编辑器,现在我正忙于查找功能。 然后,当找到用户输入的最后一次出现时,它再次跳回到开头,并且它显示文本“从顶部找到第一次出现,已到达文件末尾”。在窗口的底部。
但是,显示此项也会更改所有其他项目的位置,您可以看到here。现在我想从 将文本添加到对话框底部后的布局开始。这是我的相关代码:
find_window = Toplevel()
find_window.geometry('338x70')
find_window.title('Find')
Label(find_window, text='Enter text to find:').grid(row=0, column=0, sticky=W)
find_text = Entry(find_window, highlightcolor='blue', highlightbackground='blue', highlightthickness=1)
find_nextbutton = Button(find_window, text='Find Next', command=find_next)
find_allbutton = Button(find_window, text='Find All')
find_text.grid(row=0, column=1, sticky=W)
find_nextbutton.grid(row=0, column=2, sticky=W)
find_allbutton.grid(row=1, column=2, sticky=W)
当发现最后一次出现时,我这样做:
file_end = Label(find_window, text='Found 1st occurance from the top, end of file has been reached.')
file_end.grid(row=2, columnspan=4, sticky=W)
答案 0 :(得分:1)
最简单的解决方案是不要将窗口强制为特定大小,并始终在那里标记。将宽度设置得足够大,以包含消息的全文。当您准备好显示值时,请使用configure
方法显示文本。
以下是基于您的代码的完整示例:
from tkinter import *
root = Tk()
text = Text(root)
text.pack(fill="both", expand=True)
with open(__file__, "r") as f:
text.insert("end", f.read())
def find_next():
file_end.configure(text='Found 1st occurance from the top, end of file has been reached.')
find_window = Toplevel()
#find_window.geometry('338x70')
find_window.title('Find')
Label(find_window, text='Enter text to find:').grid(row=0, column=0, sticky=W)
find_text = Entry(find_window, highlightcolor='blue', highlightbackground='blue', highlightthickness=1)
find_nextbutton = Button(find_window, text='Find Next', command=find_next)
find_allbutton = Button(find_window, text='Find All')
file_end = Label(find_window, width=50)
find_text.grid(row=0, column=1, sticky=W)
find_nextbutton.grid(row=0, column=2, sticky=W)
find_allbutton.grid(row=1, column=2, sticky=W)
file_end.grid(row=2, columnspan=4, sticky="w")
find_window.lift(root)
root.mainloop()