Cannot achieve padding with Tkinter "grid" [column,row]configure()"

Dan Kuchler kuchler at ajubasolutions.com
Thu Aug 24 10:42:59 EDT 2000


Steve Holden wrote:
> 
> I'm just starting to get to grips with Tkinter GUI's, and have managed
> to produce a somewhat usable prototype interface for a mail search
> program I'm working on.  But no matter what I try, I just can't seem
> to get the grid cells to pad.  Everything is jammed together in the
> window!
> 
> The relevant sections of the code are extracted below.  Sorry if my
> mailer wraps the code.  Can anyone explain my dumb error?
> 
> I've looked for information on this topic in the effbot's notes from
> the pythonware site, and Grayson's "Python and Tkinter Programming".
> If there are better (or even simply other) references around I would
> appreciate pointers.
> 
> regards
> Steve Holden
> ------------------------ Code extracts begin -----------------------
> from Tkinter import *
> import Pmw
> import os
> import DBSubject
> import string
> import sys
> import mimecntl
> 
> #
> # XXX remove all flush() calls (and debug printing?)
> #
> # Globals
> #
> DEBUG = []
> INTERVAL = 250                      # milliseconds between examinations
> NOTFOUND = -1                       # indicator for no such item
> 
> class MailSearch(Frame):
>     def __init__(self, master=None):
>         Frame.__init__(self, master)
>         self.grid(sticky=N+E+W+S)
>         for i in range(2):
>             self.columnconfigure(i, weight=1, pad=40)
>         for i in [3,4]:
>             self.rowconfigure(i, weight=1, pad=40)
>         self.createSearch()
>         self.createButtons()
>         try:
>             self.index = DBSubject.SubIndex()
>         except:
>             print "Could not open database."
>             sys.exit(-1)
>         self.after(INTERVAL, self.checkText)
>         self.sWords = []    # words in search text box
>         self.sSet = []     # matching words from database
>         self.sSel = []     # numbers of selected words
>         self.Selection = ()
>         self.cWord = NOTFOUND
>         self.sTxt.focus()
> 
>     def createSearch(self):
>         Label(self, text='Subject words:').grid(row=0, column=0, sticky=N+W)
>         t = self.sTxt = Entry(self)
>         t.grid(row=1, column=0, sticky=W+E)
>         Label(self, text='Select desired words:').grid(row=2, column=0,
> sticky=W)
>         self.wLst = Pmw.ScrolledListBox(self,
>                         listbox_selectmode=EXTENDED,
>                         listbox_exportselection=0,
>                         vscrollmode='static',
>                         hscrollmode='none')
>         self.wLst.grid(row=3, column=0, sticky=N+E+W+S)
>         Label(self, text="Subjects containing those words:").grid(row=0,
> column=1, sticky=N+W)
>         self.sLst = Pmw.ScrolledListBox(self,
>                         listbox_exportselection=0,
>                         vscrollmode='static',
>                         hscrollmode='none',
>                         selectioncommand=self.listMessages)
>         self.sLst.grid(row=1, rowspan=3, column=1, sticky=N+E+W+S)
>         self.msgList = Pmw.ScrolledListBox(self,
>                         listbox_exportselection=0,
>                         dblclickcommand=self.showMessage,
>                         vscrollmode='static',
>                         hscrollmode='none')
>         self.msgList.grid(row=4, column=0, columnspan=3, sticky=N+E+W+S)
> 
>     def createButtons(self):
>         self.xBtn = Button(self, text="Close", width=10,  command=self.close)
>         self.xBtn.grid(row=0, column=2, sticky=N)
> 
>         [Irrelevant database code, callbacks, etc., all snipped]
> 
> if __name__ == "__main__":
>     root = Pmw.initialise()
>     root.grid()
>     root.columnconfigure(0, weight=1)
>     root.rowconfigure(0, weight=1)
>     ddnotebook = MailSearch(root)
>     ddnotebook.mainloop()
> 

Take a look at the grid manual page in the Tk section at:

http://dev.scriptics.com/man/

The grid command has options for '-padx', '-pady',
'-ipadx', and '-ipady'

Using some combination of these 4 options you should be
able to get the widget padding that you want.

I hope that helps.

--Dan



More information about the Python-list mailing list