界面更新慢,如何能提高界面刷新速度?
新建了如下的一个界面:
需要实现:每勾选上一个checkbutton,会在新的界面上显示文件中的过滤内容,如上界面会显示:
定义如下函数作为每一个checkbutton的共同的command:command=AllFunc.AnaCheckedFunc
def AnaCheckedFunc(self):
…..
with open(self.AnaFileName, “r”, encoding=”ISO-8859-1”) as f:
lines = f.readlines()
for line in lines:
if self.FiltKeyWord2.get() == 1:
if "HBTrackM1".lower() in line.lower():
self.FilterContents = self.FilterContents + line
self.FilterKeyWordsColor.update({'HBTrackM1': '#DC143C'})
....
self.AnalysisWinMainShow(self.FilterKeyWordsColor, self.FilterContents)
def AnalysisWinMainShow(self,keywordsColor,content):
if self.AnalysisWinMain != None:
self.AnalysisWinMain.destroy()
self.AnalysisWinMain =tk.Tk()
self.AnalysisWinMain.title("Show Logs")
self.AnalysisWinMain.geometry("1000x600")
# ShowLogWin.resizable(0,0)
winMainFrame = tk.Frame(self.AnalysisWinMain)
winMainFrame.pack(side=tk.LEFT, fill=tk.Y)
winYScroll = tk.Scrollbar(winMainFrame)
winYScroll.pack(side=tk.RIGHT, fill=tk.Y)
winXScroll = tk.Scrollbar(winMainFrame, orient=tk.HORIZONTAL)
winXScroll.pack(side=tk.BOTTOM, fill=tk.X)
winText = tk.Text(winMainFrame, wrap=tk.NONE, width=800, height=600, xscrollcommand=winXScroll.set,yscrollcommand=winYScroll.set)
winXScroll.config(command=winText.xview)
winYScroll.config(command=winText.yview)
winText.pack(expand=tk.YES, side=tk.TOP, fill=tk.Y)
winText.insert('insert', content)
self.KeyWordHightLight(keywordsColor, winText)
self.AnalysisWinMain.protocol('WM_DELETE_WINDOW', self.AnalysisWinMainUpdate)
self.AnalysisWinMain.mainloop()
以上程序运行下来,基本功能是可以实现的,但每次运行下来,总觉得界面更新太慢了。
有没有什么办法,能让程序运行得更快一些呢?
感谢!!!
可以使用以下方式改善
self.AnalysisWinMain
在代码开始运行时, 只建立一次self.AnaFileName
只读入一次self.AnaCheckedFunc
只删除winText
全部旧的内容, 再插入新的内容.Example Code
@Jason990420 感谢您的答复,可能我的功能需求没说清楚,我的需求如下: 1处导入一个文件,2处列出一系列关键字,根据关键字的是否勾选,从文件中过滤出带关键字的每一行内容,以特殊的颜色将关键字标注出来。 我目前的基本功能已经实现了,但按照我这个程序设计,每次执行都需要耗费很长的时间,效率很低,想请教一下效率比较高的实现方法,感谢!
如果只是使用纯 python 语句来作大量的运算或搜索, 肯定速度会很慢, 试试以下方式