]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43534: Fix the turtle module working with multiple root windows GH-25594
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 26 Apr 2021 01:54:25 +0000 (18:54 -0700)
committerGitHub <noreply@github.com>
Mon, 26 Apr 2021 01:54:25 +0000 (18:54 -0700)
(cherry picked from commit 8af929fc76f21fb123f6a47cb3ebcf4e5b758dea)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Lib/turtle.py
Misc/NEWS.d/next/Library/2021-04-25-13-34-13.bpo-43937.isx95l.rst [new file with mode: 0644]

index 13f662a8c2108fa8d3aee37e220936f8990186c5..024fed858f683f25f9534a475a9484e1b0198167 100644 (file)
@@ -464,20 +464,18 @@ class TurtleScreenBase(object):
        a corresponding TurtleScreenBase class has to be implemented.
     """
 
-    @staticmethod
-    def _blankimage():
+    def _blankimage(self):
         """return a blank image object
         """
-        img = TK.PhotoImage(width=1, height=1)
+        img = TK.PhotoImage(width=1, height=1, master=self.cv)
         img.blank()
         return img
 
-    @staticmethod
-    def _image(filename):
+    def _image(self, filename):
         """return an image object containing the
         imagedata from a gif-file named filename.
         """
-        return TK.PhotoImage(file=filename)
+        return TK.PhotoImage(file=filename, master=self.cv)
 
     def __init__(self, cv):
         self.cv = cv
@@ -811,7 +809,7 @@ class TurtleScreenBase(object):
         >>> screen.mainloop()
 
         """
-        TK.mainloop()
+        self.cv.tk.mainloop()
 
     def textinput(self, title, prompt):
         """Pop up a dialog window for input of a string.
@@ -966,6 +964,8 @@ class TurtleScreen(TurtleScreenBase):
 
     def __init__(self, cv, mode=_CFG["mode"],
                  colormode=_CFG["colormode"], delay=_CFG["delay"]):
+        TurtleScreenBase.__init__(self, cv)
+
         self._shapes = {
                    "arrow" : Shape("polygon", ((-10,0), (10,0), (0,10))),
                   "turtle" : Shape("polygon", ((0,16), (-2,14), (-1,10), (-4,7),
@@ -989,7 +989,6 @@ class TurtleScreen(TurtleScreenBase):
 
         self._bgpics = {"nopic" : ""}
 
-        TurtleScreenBase.__init__(self, cv)
         self._mode = mode
         self._delayvalue = delay
         self._colormode = _CFG["colormode"]
diff --git a/Misc/NEWS.d/next/Library/2021-04-25-13-34-13.bpo-43937.isx95l.rst b/Misc/NEWS.d/next/Library/2021-04-25-13-34-13.bpo-43937.isx95l.rst
new file mode 100644 (file)
index 0000000..cb4d90b
--- /dev/null
@@ -0,0 +1 @@
+Fixed the :mod:`turtle` module working with non-default root window.