bad performance with tkinter text widget ?
Verfasst: Donnerstag 18. November 2010, 12:11
Hallo Tkinter-Text-Widget-Experten,
ich hab beim oeffnen von text files mit dem Text Widget so einige Performanceprobleme und frage mich
natuerlich, ob das normal ist und das Text Widget einfach nicht mehr hergibt oder ob es an der Art
meiner Leseroutine liegt.
Und wenn es mehr hergibt, wie man das dann wohl anpacken muesste?
Wenn ich den Code ausfuehre (pls see below), und einen 10MB file dabei lade, dauert das 20 sek,
was ich fuer so eine dicke Linux-Buechse mit 8 Processoren usw. recht viel finde.
Habt ihr aehnliche Erfahrungen mit dem Text Widget von Tkinter? Wenn ich Tags benutzen wuerde oder aehnliches, wuerde ich das ganze
ja noch verstehen, aber einfach nur eine Liste von Strings im Text Widget darstellen sollte meiner Meinung nach viel viel schneller gehen.
ich hab beim oeffnen von text files mit dem Text Widget so einige Performanceprobleme und frage mich
natuerlich, ob das normal ist und das Text Widget einfach nicht mehr hergibt oder ob es an der Art
meiner Leseroutine liegt.
Und wenn es mehr hergibt, wie man das dann wohl anpacken muesste?
Wenn ich den Code ausfuehre (pls see below), und einen 10MB file dabei lade, dauert das 20 sek,
was ich fuer so eine dicke Linux-Buechse mit 8 Processoren usw. recht viel finde.
Code: Alles auswählen
:-) l test.txt
-rw-r--r-- 1 ts7343 cae 10324863 2010-11-18 11:42 test.txt
:-) ./forum.py
12:04:58
12:05:19
:-)
ja noch verstehen, aber einfach nur eine Liste von Strings im Text Widget darstellen sollte meiner Meinung nach viel viel schneller gehen.
Code: Alles auswählen
#!/usr/bin/env python
import Tkinter as tk
import string, re, os, sys, subprocess, datetime
class app_functions(tk.LabelFrame):
def __init__(self, master):
# time stamp
my_time = datetime.datetime.now()
print my_time.strftime("%H:%M:%S")
# widget definition
tk.LabelFrame.__init__(self, master)
frame_lsf_view = tk.LabelFrame(self)
self.vview = tk.Scrollbar(frame_lsf_view)
self.lsf_view_01 = tk.Text(frame_lsf_view)
frame_lsf_view.grid( row=0, column=0, rowspan=2, columnspan=2)
self.lsf_view_01.grid( row=0, column=0)
self.grid( row=0, column=0, sticky="N"+"S"+"E"+"W")
self.lsf_view_01.configure(width=110,height=50)
# read file in list
view_file = open("test.txt", "r")
my_line_list = view_file.readlines()
view_file.close()
# put list into text widget
self.lsf_view_01.config(state='normal')
self.lsf_view_01.delete(0.0,"end")
for i,line in enumerate(my_line_list):
self.lsf_view_01.insert('end', line)
self.lsf_view_01.see('end')
self.lsf_view_01.config(state='disabled')
# time stamp
my_time = datetime.datetime.now()
print my_time.strftime("%H:%M:%S")
if __name__ == "__main__":
root = tk.Tk()
root.geometry("800x800")
root.option_add('*font',("courier",7,"bold"))
display = app_functions(root)
root.mainloop()