| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
A Tk variable wrapper unsets its Tcl variable when garbage collected, so a reference must be kept while a widget uses it. Otherwise Tk recreates the Tcl variable but never unsets it again, leaking it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Documentation build overview1 file changed ± library/tkinter.html |
Sorry, something went wrong.
|
Thanks @serhiy-storchaka for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15. |
Sorry, something went wrong.
|
GH-153098 is a backport of this pull request to the 3.15 branch. |
Sorry, something went wrong.
|
GH-153099 is a backport of this pull request to the 3.14 branch. |
Sorry, something went wrong.
|
GH-153100 is a backport of this pull request to the 3.13 branch. |
Sorry, something went wrong.
…153100) A Tk variable wrapper unsets its Tcl variable when garbage collected, so a reference must be kept while a widget uses it. Otherwise Tk recreates the Tcl variable but never unsets it again, leaking it. (cherry picked from commit 820b6ca) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…153099) A Tk variable wrapper unsets its Tcl variable when garbage collected, so a reference must be kept while a widget uses it. Otherwise Tk recreates the Tcl variable but never unsets it again, leaking it. (cherry picked from commit 820b6ca) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…153098) A Tk variable wrapper unsets its Tcl variable when garbage collected, so a reference must be kept while a widget uses it. Otherwise Tk recreates the Tcl variable but never unsets it again, leaking it. (cherry picked from commit 820b6ca) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
A Tk variable wrapper (StringVar, IntVar, ...) unsets its Tcl variable when the Python object is garbage collected.
If the wrapper is dropped while a widget still references it (through variable/textvariable), Tk recreates the Tcl variable to keep the widget working, but it is then no longer managed by Python and is never unset again — so it leaks.
This is the cause of gh-123193: dynamically creating widgets whose Variable objects are kept only in local variables (and thus collected while the widgets live on) steadily accumulates orphaned PY_VAR* Tcl globals.
It is the documented "keep a reference to your Variable" footgun rather than a fixable _tkinter bug, so this just documents the lifetime contract — on the coupling-widget-variables tutorial and on the Variable class.