Python GUI Tk : Table Grid
Grid layout manager demonstration.
from Tkinter import * class GridDemo( Frame ): def __init__( self ): Frame.__init__( self ) self.master.title( "Grid Demo" ) self.master.rowconfigure( 0, weight = 1 ) self.master.columnconfigure( 0, weight = 1 ) self.grid( sticky = W+E+N+S ) self.text1 = Text( self, width = 15, height = 5 ) self.text1.grid( rowspan = 3, sticky = W+E+N+S ) self.text1.insert( INSERT, "Text1" ) self.button1 = Button( self, text = "Button 1", width = 25 ) self.button1.grid( row = 0, column = 1, columnspan = 2, sticky = W+E+N+S ) self.button2 = Button( self, text = "Button 2" ) self.button2.grid( row = 1, column = 1, sticky = W+E+N+S ) self.button3 = Button( self, text = "Button 3" ) self.button3.grid( row = 1, column = 2, sticky = W+E+N+S ) self.button4 = Button( self, text = "Button 4" ) self.button4.grid( row = 2, column = 1, columnspan = 2, sticky = W+E+N+S ) self.entry = Entry( self ) self.entry.grid( row = 3, columnspan = 2, sticky = W+E+N+S ) self.entry.insert( INSERT, "Entry" ) self.text2 = Text( self, width = 2, height = 2 ) self.text2.grid( row = 3, column = 2, sticky = W+E+N+S ) self.text2.insert( INSERT, "Text2" ) self.rowconfigure( 1, weight = 1 ) self.columnconfigure( 1, weight = 1 ) def main(): GridDemo().mainloop() if __name__ == "__main__": main()
Grid made by Label and Entry
from Tkinter import * colors = ['red', 'green', 'orange', 'white', 'yellow', 'blue'] r = 0 for c in colors: Label(text=c, relief=RIDGE, width=25).grid(row=r, column=0) Entry(bg=c, relief=SUNKEN, width=50).grid(row=r, column=1) r = r+1 mainloop()
Grids on two windows
from Tkinter import * colors = ['red', 'green', 'yellow', 'orange', 'blue', 'navy'] def gridbox(parent): r = 0 for c in colors: l = Label(parent, text=c, relief=RIDGE, width=25) e = Entry(parent, bg=c, relief=SUNKEN, width=50) l.grid(row=r, column=0) e.grid(row=r, column=1) r = r+1 def packbox(parent): for c in colors: f = Frame(parent) l = Label(f, text=c, relief=RIDGE, width=25) e = Entry(f, bg=c, relief=SUNKEN, width=50) f.pack(side=TOP) l.pack(side=LEFT) e.pack(side=RIGHT) if __name__ == '__main__': root = Tk() gridbox(Toplevel()) packbox(Toplevel()) Button(root, text='Quit', command=root.quit).pack() mainloop()
Grid made by the Label with Raised border
# simple 2d table from Tkinter import * for i in range(5): for j in range(4): l = Label(text='%d.%d' % (i, j), relief=RIDGE) l.grid(row=i, column=j, sticky=NSEW) mainloop()
2d table of input fields
from Tkinter import * rows = [] for i in range(5): cols = [] for j in range(4): e = Entry(relief=RIDGE) e.grid(row=i, column=j, sticky=NSEW) e.insert(END, '%d.%d' % (i, j)) cols.append(e) rows.append(cols) def onPress(): for row in rows: for col in row: print col.get(), print Button(text='Fetch', command=onPress).grid() mainloop()