Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 1 | """ |
| 2 | OptionMenu widget modified to allow dynamic menu reconfiguration |
Steven M. Gava | c034b47 | 2001-11-03 14:55:47 +0000 | [diff] [blame] | 3 | and setting of highlightthickness |
Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 4 | """ |
| 5 | from Tkinter import OptionMenu |
| 6 | from Tkinter import _setit |
Steven M. Gava | c034b47 | 2001-11-03 14:55:47 +0000 | [diff] [blame] | 7 | import copy |
Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 8 | |
| 9 | class DynOptionMenu(OptionMenu): |
| 10 | """ |
Steven M. Gava | c034b47 | 2001-11-03 14:55:47 +0000 | [diff] [blame] | 11 | unlike OptionMenu, our kwargs can include highlightthickness |
Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 12 | """ |
| 13 | def __init__(self, master, variable, value, *values, **kwargs): |
Steven M. Gava | c034b47 | 2001-11-03 14:55:47 +0000 | [diff] [blame] | 14 | #get a copy of kwargs before OptionMenu.__init__ munges them |
| 15 | kwargsCopy=copy.copy(kwargs) |
Kurt B. Kaiser | e071277 | 2007-08-23 05:25:55 +0000 | [diff] [blame] | 16 | if 'highlightthickness' in list(kwargs.keys()): |
Steven M. Gava | c034b47 | 2001-11-03 14:55:47 +0000 | [diff] [blame] | 17 | del(kwargs['highlightthickness']) |
Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 18 | OptionMenu.__init__(self, master, variable, value, *values, **kwargs) |
Steven M. Gava | c034b47 | 2001-11-03 14:55:47 +0000 | [diff] [blame] | 19 | self.config(highlightthickness=kwargsCopy.get('highlightthickness')) |
Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 20 | #self.menu=self['menu'] |
| 21 | self.variable=variable |
| 22 | self.command=kwargs.get('command') |
Kurt B. Kaiser | 6655e4b | 2002-12-31 16:03:23 +0000 | [diff] [blame] | 23 | |
Steven M. Gava | 41a8532 | 2001-10-29 08:05:34 +0000 | [diff] [blame] | 24 | def SetMenu(self,valueList,value=None): |
Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 25 | """ |
| 26 | clear and reload the menu with a new set of options. |
| 27 | valueList - list of new options |
Kurt B. Kaiser | 6655e4b | 2002-12-31 16:03:23 +0000 | [diff] [blame] | 28 | value - initial value to set the optionmenu's menubutton to |
Steven M. Gava | f126bcb | 2001-10-26 06:49:14 +0000 | [diff] [blame] | 29 | """ |
| 30 | self['menu'].delete(0,'end') |
| 31 | for item in valueList: |
| 32 | self['menu'].add_command(label=item, |
| 33 | command=_setit(self.variable,item,self.command)) |
Steven M. Gava | 41a8532 | 2001-10-29 08:05:34 +0000 | [diff] [blame] | 34 | if value: |
| 35 | self.variable.set(value) |