4

I'm having trouble following the TkTable docs at how to insert predefined values into a TkTable for Tkinter GUI. Docs: https://www.eso.org/projects/vlt/sw-dev/tcl8.3.3/tktable2.7/tkTable.html

I researched into this and I have been unable to find a suitable answer documented anywhere for how to insert predefined values into a TkTable... this is an unanswered question I found: set value into tktable

Does anyone know how this is done?

Here is my example code derived from the example provided after downloading TkTable (I can set 1 dog into the table, but I have no idea how to use the set method to iterate over the list successfully to insert one cell after the other):

import tkinter as tk
import tktable

def table_test():

    #### DEFINES THE GUI ####
    master = tk.Tk()
    master.geometry('800x800+250+200')
    master.title('Dogs')

    #### SETS THE DOG INTO THE TABLE ####
    def callback_dogs(event):
        values = ['Doodle','Pug','Westie','Poodle']
        for item in values:
            return item

    #### DEFINING THE TKTABLE ####
    tb = tktable.Table(master, state='disabled', width=15, titlerows=1, rows=3, cols=2, command=callback_dogs)
    tb.pack(expand=1)

    #### MAINLOOPING ####
    master.attributes('-topmost',True)
    master.after_idle(master.attributes,'-topmost',False)
    tk.mainloop()

table_test()
Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
Krusaderjake
  • 479
  • 1
  • 7
  • 19
  • I don't see anywhere in the code where you've tried any of the "insert" methods. – Bryan Oakley Sep 06 '17 at 21:52
  • @BryanOakley I couldn't find any example to help me understand what the docs were trying to say. I did try the insert method first but could not get it working. Please share if you are able to get the insert method working. – Krusaderjake Sep 06 '17 at 23:21

1 Answers1

1

Well I figured out a solution by defining a tktable.ArrayVar(master) variable after revisiting the example in the download of TkTable. Please post if there are better solutions.

Here is my example I could get working to load pre-existing data values into a TkTable:

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()

Example TkTable

Krusaderjake
  • 479
  • 1
  • 7
  • 19
  • Sorry to trouble you and how did you install the tktable module successfully? I am struggling with the installation. Could you advise please? Thank you very much. – Dogod Dec 08 '17 at 01:25
  • its part of https://github.com/DaShagy/python-tktable – PvdL Jan 28 '22 at 16:12