Python Forum

Full Version: tktable/ table on GUI
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, I have a question.

I came accross a code in the internet, which adds a table on the GUI. But I can not find any documentation on this.

So, please give me a hint how to add a dynamic table on GUI.

Thanks a lot

import tkinter as tk
import tktable

def table_test():
    #### DEFINES THE INTERFACE ####
    master = tk.Tk()
    master.geometry('500x200+250+200')
    master.title('Dogs')
    #### DEFINING THE TABLE ####
    tb = tktable.Table(master,
                       state='disabled',
                       width=50,
                       titlerows=1,
                       rows=5,
                       cols=4,
                       colwidth=20)
    columns = ['Breed','Price','Location','Age']
    #### LIST OF LISTS DEFINING THE ROWS AND VALUES IN THOSE ROWS ####
    values = [['Doodle','1500','Chicago','1'],
              ['Pug','700','Kansas City','2'],
              ['Westie','1000','Lincoln','1'],
              ['Poodle','900','Atlanta','2']]
    #### SETS THE DOGS INTO THE TABLE ####
    #### VVVVVVVVVVVVVVVVVVVVVVVVVVV ####
    #DEFINING THE VAR TO USE AS DATA IN TABLE
    var = tktable.ArrayVar(master)
    row_count=0
    col_count=0
    #SETTING COLUMNS
    for col in columns:
        index = "%i,%i" % (row_count,col_count)
        var[index] = col
        col_count+=1
    row_count=1
    col_count=0
    #SETTING DATA IN ROWS
    for row in values:
        for item in row:
            print(item)
            index = "%i,%i" % (row_count,col_count)
            ## PLACING THE VALUE IN THE INDEX CELL POSITION ##
            var[index] = item
            #### IGNORE THIS IF YOU WANT, JUST SETTING SOME CELL COLOR ####
            try:
                if int(item) > 999:
                    tb.tag_cell('green',index)
            except:
                pass
            ###############################################################
            col_count+=1       
        col_count=0
        row_count+=1
    #### ABOVE CODE SETS THE DOG INTO THE TABLE ####
    ################################################
    #### VARIABLE PARAMETER SET BELOW ON THE 'TB' USES THE DATA DEFINED ABOVE ####
    tb['variable'] = var
    tb.pack()
    #tb.tag_cell('green',index)
    tb.tag_configure('green', background='green')
    #### MAINLOOPING ####
    tk.mainloop()
table_test()
tktable is not part of tkinter.
This must be a routine written by author.
It should be in same repository as where this code came from.
Again, this looks like it was written by the European Southern Observatory.
It's not officially a part of tkinter I don't see tkinter mentioned in this
document either, but I do see tk which is what tkinter is wrapped around.
So I checked tkinter.ttk and:
>>> from tkinter import ttk
>>> help('ttk.tktable')
No Python documentation found for 'ttk.tktable'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.

>>>
And:
>>> help('tkinter.tktable')
No Python documentation found for 'tkinter.tktable'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.

>>>
doesn't appear to be part of that either.
There are ways to integrate raw tk into tkinter, I've never done it myself,
but you might want to take a look at: https://docs.python.org/3/library/tkinter.html
Looks like a good class though!

So, now you have the docs,