Reputation: 485
I am trying to make a code, which returns data as a table. Unfortunally it returns 12 rows and 9 colums, even though I have just 2 datapoints to display. Where is my mistake?
This is the code used:
import Tkinter as tk
from tkintertable.Tables import TableCanvas
class createTable(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
#########################################
self.master.grid_rowconfigure(0, weight=1)
self.master.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
self.grid(sticky=tk.NW+tk.SE)
#########################################
self.F = tk.Frame(self)
self.F.grid(row=0, column=0, sticky=tk.NW+tk.SE)
self.createWidgets()
def createWidgets(self):
self.table = TableCanvas(self.F,cellwidth=250, editable=False, )
self.table.createTableFrame()
model = self.table.model
model.importDict(d)
self.table.redrawTable()
if __name__ == '__main__':
f = open("./out.txt")
tempDic = {}
for var, line in enumerate(f):
if not "\t" in line and line != '\n':
key = line.replace(":","").strip()
tempDic[key] = []
elif line == '\n':
continue
else:
tempDic[key].append(line.replace("\t","").replace(" ","").strip().replace(":",""))
f.close()
a = 0
d = {}
#Visualize
for i, keys in tempDic.iteritems():
d['rec' + str(a)] = {'System': tempDic[i][0], 'Name': tempDic[i][2], 'Version': tempDic[i][1], 'IP': i}
a += 1
print d
app = createTable()
app.master.title('Visual')
app.mainloop()
Upvotes: 1
Views: 248
Reputation: 485
I got it figured out: the Table has a predefined model, on wich the importDict() function only extends. To fix it, just create a new model.
Upvotes: 1