Kaydet (Commit) b212b75c authored tarafından Guilherme Polo's avatar Guilherme Polo

Issue #1658: dict size is changing during iteration in tkinter.BaseWidget and

tkinter.scrolledtext.ScrolledText.

Reviewed by Amaury Forgeot d'Arc
üst c96cba04
...@@ -1913,11 +1913,9 @@ class BaseWidget(Misc): ...@@ -1913,11 +1913,9 @@ class BaseWidget(Misc):
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 @@ class ScrolledText(Text): ...@@ -19,11 +19,10 @@ class ScrolledText(Text):
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 ...@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment