table widget?

Michael Lunnay mlunnay at bigpond.net.au
Thu May 24 10:34:18 CEST 2001


I have just created a simple, static table. It is not a Tkinter subclass,
but it may be a start or may even fit your needs as is. I will look at
creating a Pmw widget when this semester finishes and make it available,
untill then see if you can use this (please excuse lack of doc strings or
comments, but it should be pretty straight forward):

from Tkinter import *
import Pmw

class Table:
    def __init__(self, parent, headings):
        self._rows = 0
        self._headings = headings
        self._cells = []
        self._table = Pmw.ScrolledFrame(parent)
        self._table.pack(padx = 5, fill='both', expand = 1)
 self._frame = self._table.interior()
        self._row = 1

        col = 0
        for h in headings:
            Label(self._frame, text=h, relief=RAISED,
borderwidth=2).grid(row = 0, column = col, sticky = 'nsew')

            self._frame.grid_rowconfigure(0, weight = 1)
            self._frame.grid_columnconfigure(col, weight = 1)
            self._table.reposition()
            col = col + 1

        self._table.configure(horizflex = 'expand')

    def addRow(self, data, color='#ffffff'):
        col = 0
        self._cells.append([])
        for d in data:
            l = Label(self._frame, text=d, relief=SOLID, borderwidth=1,
background=color, padx=2, pady=2)
            l.grid(row=self._row, column=col, sticky = 'nsew')

            self._frame.grid_rowconfigure(self._row, weight = 1)
            self._frame.grid_columnconfigure(col, weight = 1)
            self._table.reposition()

            self._cells[self._row - 1].append(l)

            col = col + 1

        self._row = self._row + 1

    def getData(self, row, col):
        return self.cells[row][col]['text']

    def setData(self, row, col, data):
        print "%d %d, %s" %(row, col, data)
        self.cells[row][col]['text'] = data

    def clear(self):
 for window in self._frame.winfo_children():
  window.destroy()

 col = 0
 for h in self._headings:
            Label(self._frame, text=h, relief=RAISED,
borderwidth=2).grid(row = 0, column = col, sticky = 'nsew')

            self._frame.grid_rowconfigure(0, weight = 1)
            self._frame.grid_columnconfigure(col, weight = 1)
            self._table.reposition()
            col = col + 1


"Stijn Gunst" <stijn.gunst at student.kuleuven.ac.be> wrote in message
news:3B0C31C8.35D882F3 at student.kuleuven.ac.be...
> hi
>
> i can't find a tablewidget for Python (not even in the Pmw megawidget
> module)
> how should i visually represent sql-data with those modules? a array of
> editboxes seems a bit cumbersome
>
> tx
>





More information about the Python-list mailing list