#!python2
#coding: utf-8
from Tkinter import *
from ttk import *
from tkintertable.Tables import TableCanvas
from tkintertable.TableModels import TableModel
'''
创建Table
'''
root=Tk()
main_f=Frame(root)
main_f.pack()
table = TableCanvas(main_f)
table.createTableFrame()
'''
导入数据到表格中
'''
model = table.model
#model.importDict(data) #can import from a dictionary to populate model
table.load("1.table")
table.model.data[0]['Model']='test'
table.model.data[6]['Model']='test6'
table.redrawTable()
'''
实时更新表格内容,每隔5s检查文件table_input.txt
'''
def updatetable(filename):
f=open(filename,'r')
for lineno,line in enumerate(f):
if lineno == 0:
continue
else:
rowid=lineno-1
elements=line.strip().split()
print elements
table.model.data[rowid]['Model']=elements[0]
table.model.data[rowid]['Qty']=elements[1]
table.model.data[rowid]['Time']=elements[2]
table.redrawTable()
main_f.after(5000,updatetable,"table_input.txt")
main_f.after(5000,updatetable,"table_input.txt")
mainloop()
这里使用了一个小技巧,嵌套使用after
widget.after(time,func,*args)
widget在等待time后执行一次函数func,args是传给func的参数,只执行一次func.
在func中的最后再次调用widget.after函数,就形成了无穷循环。每隔time,执行一次func.