elide를 사용하여 정보 섹션을 숨길 수있는 태그가있는 텍스트 위젯을 설정했습니다. 그것은 정상적인 항목으로 잘 작동하지만, 필자가 elide를 사용하여 텍스트의 큰 섹션을 숨기면 성능이 저하되는 것을보고 있습니다. 내가 알아 차 렸던 텍스트 파일은 ~ 53,000 줄이고 작은 파일의 영향은 적습니다. 프로그램은 잘 실행되고 스크롤 할 수 있으며, 텍스트 섹션을 숨길 때까지 문제없이 윈도우에서 이동할 수 있습니다. elide를 사용하여 텍스트를 숨길 때 성능에 영향이 있음
from tkinter import *
master = Tk()
file = 'file\path'
file1 = 'file\path'
file2 = 'file\path'
file3 = 'file\path'
file4 = 'file\path'
file5 = 'file\path'
file6 = 'file\path'
file7 = 'file\path'
list = [file, file1, file2, file3, file4, file5, file6, file7]
def _toggle_visibility(event, widg):
global txt
try:
block_start, block_end = _get_block("insert", widg)
except:
return
next_hidden = widg.tag_nextrange("hidden", block_start, block_end)
if next_hidden:
widg.tag_remove("hidden", block_start, block_end)
else:
widg.tag_add("hidden", block_start, block_end)
def _get_block(index, widg):
global txt
'''return indicies after header, to next header or EOF'''
start = widg.index("%s lineend+1c" % index)
next_header = widg.tag_nextrange("header", start)
if next_header:
end = next_header[0]
else:
end = widg.index("end-1c")
return (start, end)
txt = Text(master)
txt.grid()
txt.tag_configure("header", foreground="#9b3e96") # , spacing1=10, spacing3=10)
txt.tag_bind("header", "<Double-1>", lambda event: _toggle_visibility(event, txt))
txt.tag_configure("hidden", elide=True)
for item in list:
with open(item) as f:
h = f.readlines()
txt.insert('end', '==============================================\n ', 'header')
txt.insert('end', h)
master.mainloop()
복제하려면
정말 큰 텍스트 파일의 소수를 얻을 수 및 텍스트 위젯에 모두 덤프 위의 코드를 사용 (7 일 필요는 없습니다). 그런 다음 "=============================================================================================================== === "해당 파일의 모든 텍스트를 최소화합니다. 인쇄 된 마지막 파일을 최소화하면 모든 것이 잘 동작합니다. 첫 번째 문자를 최소화하면 문자를 강조 표시하고 창의 아무 곳이나 클릭하여 느린 응답을 보게됩니다.
'elide'가 true로 설정되면 어떻게됩니까?
pyinstaller로 exe 파일을 만든 후에 pycharm과 다른 컴퓨터에서이 파일을 테스트했습니다.
elide의 성능 문제는 Tcl/Tk 버전 8.7에서 수정 될 것입니다. –
@BradLanam GA로 전환 할 때 8.7 릴리즈를 볼 수있는 가장 좋은 곳은 어디입니까? 또한,이 표시를 할 수 있도록 대답해야합니까? – sidnical