[Tutor] Pmw/Tkinter question

Albert-Jan Roskam sjeik_appie at hotmail.com
Sat Mar 12 05:05:45 EST 2016


> To: tutor at python.org
> From: __peter__ at web.de
> Date: Sat, 12 Mar 2016 10:28:36 +0100
> Subject: Re: [Tutor] Pmw/Tkinter question
> 
> Albert-Jan Roskam wrote:
> 
> > Hello,
> > 
> > Below is a slightly modified example about Pmw/Tkinter from
> > http://pmw.sourceforge.net/doc/howtouse.html. I changed the geometry
> > manager from 'pack' to 'grid', because I use that in all other parts of my
> > program. The problem is, 'broccoli' won't display nicely under vege_menu.
> > I want it to left-align, not center (I don't case that it's truncated). In
> > plain Tkinter I could do "self.vege_menu.configure(anchor=Tkinter.W)" but
> > this raises a KeyError in Pmw.
> 
> I don't see an official way to to change the alignment, but looking into the 
> source there's
> 
> class OptionMenu(Pmw.MegaWidget):
> 
>     def __init__(self, parent = None, **kw):
> 
> [...]
> 	self._menubutton = self.createcomponent('menubutton',
> 		(), None,
> 		Tkinter.Menubutton, (interior,),
> 		borderwidth = 2,
> 		indicatoron = 1,
> 		relief = 'raised',
> 		anchor = 'c',
> 		highlightthickness = 2,
> 		direction = 'flush',
>                 takefocus = 1,
> 	)
> 
> so if you don't mind touching _private attributes
> 
> >         self.vege_menu = Pmw.OptionMenu (parent,
> >                 labelpos = 'w',
> >                 label_text = 'Choose vegetable:',
> >                 items = ('broccoli-broccoli-broccoli-broccoli', 'peas',
> >                 'carrots', 'pumpkin'), menubutton_width = 10,
> >                 command = self._printOrder,
> >         )
>           self.vege_menu._menubutton.config(anchor=Tkinter.W)
> 
> >         #self.vege_menu.pack(anchor = 'w', padx = 10, pady = 10)
> >         self.vege_menu.grid(row=1, column=0, sticky = 'w', padx = 10, pady
> >         = 10)
> 
> should work.

Ahh, yes, that works! Thank you!! I should indeed have looked at the source myself.
The Tk website is often informative, but not everything is exposed by Tkinter/Pmw.
This is also the first time I tried Pmw. A lot less verbose than Tkinter, but it takes some time
to learn the names/meaning of various parameters. They differ from the equivalent params in 
Tkinter and are often more descriptive, but pre-existing knowledge of Tkinter creates some "noise".

Best wishes,
Albert-Jan


 		 	   		  


More information about the Tutor mailing list