mirror of https://github.com/python/cpython.git
Issue #1658: dict size is changing during iteration in tkinter.BaseWidget and
tkinter.scrolledtext.ScrolledText. Reviewed by Amaury Forgeot d'Arc
This commit is contained in:
parent
c96cba047b
commit
b212b75c22
|
@ -1913,11 +1913,9 @@ def __init__(self, master, widgetName, cnf={}, kw={}, extra=()):
|
||||||
cnf = _cnfmerge((cnf, kw))
|
cnf = _cnfmerge((cnf, kw))
|
||||||
self.widgetName = widgetName
|
self.widgetName = widgetName
|
||||||
BaseWidget._setup(self, master, cnf)
|
BaseWidget._setup(self, master, cnf)
|
||||||
classes = []
|
classes = [(k, v) for k, v in cnf.items() if isinstance(k, type)]
|
||||||
for k in cnf.keys():
|
for k, v in classes:
|
||||||
if isinstance(k, type):
|
del cnf[k]
|
||||||
classes.append((k, cnf[k]))
|
|
||||||
del cnf[k]
|
|
||||||
self.tk.call(
|
self.tk.call(
|
||||||
(widgetName, self._w) + extra + self._options(cnf))
|
(widgetName, self._w) + extra + self._options(cnf))
|
||||||
for k, v in classes:
|
for k, v in classes:
|
||||||
|
|
|
@ -19,11 +19,10 @@ def __init__(self, master=None, cnf=None, **kw):
|
||||||
cnf = {}
|
cnf = {}
|
||||||
if kw:
|
if kw:
|
||||||
cnf = _cnfmerge((cnf, kw))
|
cnf = _cnfmerge((cnf, kw))
|
||||||
fcnf = {}
|
fcnf = {k:v for k,v in cnf.items() if isinstance(k,type) or k=='name'}
|
||||||
for k in cnf.keys():
|
for k in fcnf.keys():
|
||||||
if isinstance(k, type) or k == 'name':
|
del cnf[k]
|
||||||
fcnf[k] = cnf[k]
|
|
||||||
del cnf[k]
|
|
||||||
self.frame = Frame(master, **fcnf)
|
self.frame = Frame(master, **fcnf)
|
||||||
self.vbar = Scrollbar(self.frame, name='vbar')
|
self.vbar = Scrollbar(self.frame, name='vbar')
|
||||||
self.vbar.pack(side=RIGHT, fill=Y)
|
self.vbar.pack(side=RIGHT, fill=Y)
|
||||||
|
|
|
@ -77,6 +77,9 @@ C API
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #1658: tkinter changes dict size during iteration in both
|
||||||
|
tkinter.BaseWidget and tkinter.scrolledtext.ScrolledText.
|
||||||
|
|
||||||
- The bsddb module (and therefore the dbm.bsd module) has been removed.
|
- The bsddb module (and therefore the dbm.bsd module) has been removed.
|
||||||
It is now maintained outside of the standard library at
|
It is now maintained outside of the standard library at
|
||||||
http://www.jcea.es/programacion/pybsddb.htm.
|
http://www.jcea.es/programacion/pybsddb.htm.
|
||||||
|
|
Loading…
Reference in New Issue