Mercurial > cpython-lru_cache-weakref
annotate Lib/idlelib/dynOptionMenuWidget.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | ef4cca2d6171 |
| children |
| rev | line source |
|---|---|
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
1 """ |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
2 OptionMenu widget modified to allow dynamic menu reconfiguration |
|
20859
15c924a11aec
added ability to set hilightthickness
Steven M. Gava <elguavas@python.net>
parents:
20735
diff
changeset
|
3 and setting of highlightthickness |
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
4 """ |
|
47130
ef4cca2d6171
Tkinter, step 2: adapt imports.
Georg Brandl <georg@python.org>
parents:
42725
diff
changeset
|
5 from tkinter import OptionMenu |
|
ef4cca2d6171
Tkinter, step 2: adapt imports.
Georg Brandl <georg@python.org>
parents:
42725
diff
changeset
|
6 from tkinter import _setit |
|
20859
15c924a11aec
added ability to set hilightthickness
Steven M. Gava <elguavas@python.net>
parents:
20735
diff
changeset
|
7 import copy |
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
8 |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
9 class DynOptionMenu(OptionMenu): |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
10 """ |
|
20859
15c924a11aec
added ability to set hilightthickness
Steven M. Gava <elguavas@python.net>
parents:
20735
diff
changeset
|
11 unlike OptionMenu, our kwargs can include highlightthickness |
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
12 """ |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
13 def __init__(self, master, variable, value, *values, **kwargs): |
|
20859
15c924a11aec
added ability to set hilightthickness
Steven M. Gava <elguavas@python.net>
parents:
20735
diff
changeset
|
14 #get a copy of kwargs before OptionMenu.__init__ munges them |
|
15c924a11aec
added ability to set hilightthickness
Steven M. Gava <elguavas@python.net>
parents:
20735
diff
changeset
|
15 kwargsCopy=copy.copy(kwargs) |
|
42725
fa9a40ef0780
Conform to py3k dict.{keys, items, values} with some advice from 2b3
Kurt B. Kaiser <kbk@shore.net>
parents:
26959
diff
changeset
|
16 if 'highlightthickness' in list(kwargs.keys()): |
|
20859
15c924a11aec
added ability to set hilightthickness
Steven M. Gava <elguavas@python.net>
parents:
20735
diff
changeset
|
17 del(kwargs['highlightthickness']) |
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
18 OptionMenu.__init__(self, master, variable, value, *values, **kwargs) |
|
20859
15c924a11aec
added ability to set hilightthickness
Steven M. Gava <elguavas@python.net>
parents:
20735
diff
changeset
|
19 self.config(highlightthickness=kwargsCopy.get('highlightthickness')) |
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
20 #self.menu=self['menu'] |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
21 self.variable=variable |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
22 self.command=kwargs.get('command') |
| 26959 | 23 |
|
20735
faa2726dea37
more of config dialog reading from files
Steven M. Gava <elguavas@python.net>
parents:
20685
diff
changeset
|
24 def SetMenu(self,valueList,value=None): |
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
25 """ |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
26 clear and reload the menu with a new set of options. |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
27 valueList - list of new options |
| 26959 | 28 value - initial value to set the optionmenu's menubutton to |
|
20685
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
29 """ |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
30 self['menu'].delete(0,'end') |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
31 for item in valueList: |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
32 self['menu'].add_command(label=item, |
|
99ad2a9d20e1
dynamic option menu widget.
Steven M. Gava <elguavas@python.net>
parents:
diff
changeset
|
33 command=_setit(self.variable,item,self.command)) |
|
20735
faa2726dea37
more of config dialog reading from files
Steven M. Gava <elguavas@python.net>
parents:
20685
diff
changeset
|
34 if value: |
|
faa2726dea37
more of config dialog reading from files
Steven M. Gava <elguavas@python.net>
parents:
20685
diff
changeset
|
35 self.variable.set(value) |
