summaryrefslogtreecommitdiffstats
path: root/Lib/turtledemo/two_canvases.py
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2014-06-30 20:09:24 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2014-06-30 20:09:24 (GMT)
commitf5ac57dc05818e4fe2ff5118680fe136937d768e (patch)
tree28c5be50f2bc8a0cdc6d77a61bf0bb079461c642 /Lib/turtledemo/two_canvases.py
parent98b6391fd4b27485b17c068d6f85a00d3f7c5ddc (diff)
downloadcpython-f5ac57dc05818e4fe2ff5118680fe136937d768e.zip
cpython-f5ac57dc05818e4fe2ff5118680fe136937d768e.tar.gz
cpython-f5ac57dc05818e4fe2ff5118680fe136937d768e.tar.bz2
Issue #21882: In turtle demos, remove module scope gui and sys calls by
either deleting or moving to the module's main function.
Diffstat (limited to 'Lib/turtledemo/two_canvases.py')
-rwxr-xr-xLib/turtledemo/two_canvases.py86
1 files changed, 40 insertions, 46 deletions
diff --git a/Lib/turtledemo/two_canvases.py b/Lib/turtledemo/two_canvases.py
index 26882ca..d579876 100755
--- a/Lib/turtledemo/two_canvases.py
+++ b/Lib/turtledemo/two_canvases.py
@@ -1,60 +1,54 @@
"""turtledemo.two_canvases
Use TurtleScreen and RawTurtle to draw on two
-distinct canvases.
+distinct canvases in a separate windows. The
+new window must be separately closed in
+addition to pressing the STOP button.
"""
-#The final mainloop only serves to keep the window open.
-
-#TODO: This runs in its own two-canvas window when selected in the
-#demoviewer examples menu but the text is not loaded and the previous
-#example is left visible. If the ending mainloop is removed, the text
-#Eis loaded, this run again in a third window, and if start is pressed,
-#demoviewer raises an error because main is not found, and then freezes.
from turtle import TurtleScreen, RawTurtle, TK
-root = TK.Tk()
-cv1 = TK.Canvas(root, width=300, height=200, bg="#ddffff")
-cv2 = TK.Canvas(root, width=300, height=200, bg="#ffeeee")
-cv1.pack()
-cv2.pack()
+def main():
+ root = TK.Tk()
+ cv1 = TK.Canvas(root, width=300, height=200, bg="#ddffff")
+ cv2 = TK.Canvas(root, width=300, height=200, bg="#ffeeee")
+ cv1.pack()
+ cv2.pack()
-s1 = TurtleScreen(cv1)
-s1.bgcolor(0.85, 0.85, 1)
-s2 = TurtleScreen(cv2)
-s2.bgcolor(1, 0.85, 0.85)
+ s1 = TurtleScreen(cv1)
+ s1.bgcolor(0.85, 0.85, 1)
+ s2 = TurtleScreen(cv2)
+ s2.bgcolor(1, 0.85, 0.85)
-p = RawTurtle(s1)
-q = RawTurtle(s2)
+ p = RawTurtle(s1)
+ q = RawTurtle(s2)
-p.color("red", (1, 0.85, 0.85))
-p.width(3)
-q.color("blue", (0.85, 0.85, 1))
-q.width(3)
+ p.color("red", (1, 0.85, 0.85))
+ p.width(3)
+ q.color("blue", (0.85, 0.85, 1))
+ q.width(3)
-for t in p,q:
- t.shape("turtle")
- t.lt(36)
+ for t in p,q:
+ t.shape("turtle")
+ t.lt(36)
-q.lt(180)
+ q.lt(180)
-for t in p, q:
- t.begin_fill()
-for i in range(5):
for t in p, q:
- t.fd(50)
- t.lt(72)
-for t in p,q:
- t.end_fill()
- t.lt(54)
- t.pu()
- t.bk(50)
-
-## Want to get some info?
-
-#print(s1, s2)
-#print(p, q)
-#print(s1.turtles())
-#print(s2.turtles())
-
-TK.mainloop()
+ t.begin_fill()
+ for i in range(5):
+ for t in p, q:
+ t.fd(50)
+ t.lt(72)
+ for t in p,q:
+ t.end_fill()
+ t.lt(54)
+ t.pu()
+ t.bk(50)
+
+ return "EVENTLOOP"
+
+
+if __name__ == '__main__':
+ main()
+ TK.mainloop() # keep window open until user closes it