IcyTv
IcyTv

Reputation: 485

Python Tkintertable fit to window too many rows/colums

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:

Pastebin with code

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

Answers (1)

IcyTv
IcyTv

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

Related Questions