T. *_*son 6 python render tkinter
我正在尝试创建一个Python脚本来突出显示.txt文件中的特定模式.为此,我更改了一个脚本,该脚本使用Tkinter突出显示给定的数据集.然而,我倾向于让它处理的文件大约是10000行,这导致慢滚动,因为我认为它呈现所有内容 - 无论是否在屏幕上(如果我错了,请纠正我).是否可以更改我的代码,以便以更有效的方式呈现输出?我试图寻找一种方法来做到这一点,但我自己没有找到任何东西.
我的代码如下:
from Tkinter import *
class FullScreenApp(object):
def __init__(self, master, **kwargs):
self.master=master
pad=3
self._geom='200x200+0+0'
master.geometry("{0}x{1}+0+0".format(
master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
master.bind('<Escape>',self.toggle_geom)
def toggle_geom(self,event):
geom=self.master.winfo_geometry()
print(geom,self._geom)
self.master.geometry(self._geom)
self._geom=geom
root = Tk()
app = FullScreenApp(root)
t = Text(root)
t.pack()
#Import file
with open('data.txt') as f:
for line in f:
t.insert(END, line)
#Search terms - Leave blank if not required
search_term0 = '0xCAFE'
search_term1 = '0x0011'
search_term2 = '0x961E'
search_term3 = '0x0000'
search_term4 = ''
#Assigns highlighted colours for terms not blank
t.tag_config(search_term0, background='red')
if search_term1 != '':
t.tag_config(search_term1, background='red')
if search_term2 != '':
t.tag_config(search_term2, background='red')
if search_term3 != '':
t.tag_config(search_term3, background='red')
if search_term4 != '':
t.tag_config(search_term4, background='red')
#Define search
#Requires text widget, the keyword, and a tag
def search(text_widget, keyword, tag):
pos = '1.0'
while True:
idx = text_widget.search(keyword, pos, END)
if not idx:
break
pos = '{}+{}c'.format(idx, len(keyword))
text_widget.tag_add(tag, idx, pos)
#Search for terms that are not blank
search(t, search_term0, search_term0)
if search_term1 != '':
search(t, search_term1, search_term1)
if search_term2 != '':
search(t, search_term2, search_term2)
if search_term3 != '':
search(t, search_term3, search_term3)
if search_term4 != '':
search(t, search_term4, search_term3)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
以下链接给出了文件中数据的示例:此处
非常感谢您的时间,非常感谢.
所以这个问题可以通过多线程来解决。一台计算机可以同时执行多项任务,否则,您的网络体验将不一样。这是一个演示多线程的简单函数
from threading import Thread
def execOnDifferentThread(funct=print, params=("hello world",)):
t = Thread(target=funct, args=params)
t.start()
Run Code Online (Sandbox Code Playgroud)
现在请注意,这可能不是最好的示例,但是现在要并行运行函数,您所要做的就是execOnDifferentThread(funct=A, params=B)其中 A 是函数名称,B 是 将传递给函数的参数元组。现在,我不想为您编写代码,但是使用此函数,您可以修改multi-thread代码的某些部分以使其更快。如果您确实遇到困难,请在哪里发表评论并提供帮助。但请先自己尝试一下,现在您已经掌握了多线程的能力