Issue #21882: In turtle demos, remove module scope gui and sys calls by
either deleting or moving to the module's main function.
This commit is contained in:
parent
98b6391fd4
commit
f5ac57dc05
|
@ -140,7 +140,7 @@ _tg_turtle_functions = ['back', 'backward', 'begin_fill', 'begin_poly', 'bk',
|
|||
_tg_utilities = ['write_docstringdict', 'done']
|
||||
|
||||
__all__ = (_tg_classes + _tg_screen_functions + _tg_turtle_functions +
|
||||
_tg_utilities) # + _math_functions)
|
||||
_tg_utilities + ['Terminator']) # + _math_functions)
|
||||
|
||||
_alias_list = ['addshape', 'backward', 'bk', 'fd', 'ht', 'lt', 'pd', 'pos',
|
||||
'pu', 'rt', 'seth', 'setpos', 'setposition', 'st',
|
||||
|
|
|
@ -11,11 +11,8 @@ and time
|
|||
------------------------------------
|
||||
"""
|
||||
from turtle import *
|
||||
from turtle import Terminator # not in __all__
|
||||
from datetime import datetime
|
||||
|
||||
mode("logo")
|
||||
|
||||
def jump(distanz, winkel=0):
|
||||
penup()
|
||||
right(winkel)
|
||||
|
@ -43,7 +40,6 @@ def make_hand_shape(name, laenge, spitze):
|
|||
hand_form = get_poly()
|
||||
register_shape(name, hand_form)
|
||||
|
||||
|
||||
def clockface(radius):
|
||||
reset()
|
||||
pensize(7)
|
||||
|
@ -84,7 +80,6 @@ def setup():
|
|||
writer.pu()
|
||||
writer.bk(85)
|
||||
|
||||
|
||||
def wochentag(t):
|
||||
wochentag = ["Monday", "Tuesday", "Wednesday",
|
||||
"Thursday", "Friday", "Saturday", "Sunday"]
|
||||
|
@ -131,6 +126,7 @@ def main():
|
|||
return "EVENTLOOP"
|
||||
|
||||
if __name__ == "__main__":
|
||||
mode("logo")
|
||||
msg = main()
|
||||
print(msg)
|
||||
mainloop()
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
# colormixer
|
||||
|
||||
from turtle import Screen, Turtle, mainloop
|
||||
import sys
|
||||
sys.setrecursionlimit(20000) # overcomes, for now, an instability of Python 3.0
|
||||
|
||||
class ColorTurtle(Turtle):
|
||||
|
||||
|
|
|
@ -54,6 +54,9 @@
|
|||
(2) How to add your own demos to the demo repository
|
||||
|
||||
- Place the file in the same directory as turtledemo/__main__.py
|
||||
IMPORTANT! When imported, the demo should not modify the system
|
||||
by calling functions in other modules, such as sys, tkinter, or
|
||||
turtle. Global variables should be initialized in main().
|
||||
|
||||
- The code must contain a main() function which will
|
||||
be executed by the viewer (see provided example scripts).
|
||||
|
@ -65,7 +68,7 @@
|
|||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
mainloop() # keep window
|
||||
mainloop() # keep window open
|
||||
|
||||
python -m turtledemo.mydemo # will then run it
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@ stretched to rectangles by shapesize()
|
|||
---------------------------------------
|
||||
"""
|
||||
from turtle import *
|
||||
from turtle import Terminator # not in __all__
|
||||
|
||||
class Disc(Turtle):
|
||||
def __init__(self, n):
|
||||
|
|
|
@ -143,7 +143,6 @@ class NimView(object):
|
|||
self.writer.write(msg1, align="center", font=("Courier",14,"bold"))
|
||||
self.screen.tracer(True)
|
||||
|
||||
|
||||
def setup(self):
|
||||
self.screen.tracer(False)
|
||||
for row in range(3):
|
||||
|
@ -181,6 +180,7 @@ class NimView(object):
|
|||
if self.game.state == Nim.OVER:
|
||||
self.screen.clear()
|
||||
|
||||
|
||||
class NimController(object):
|
||||
|
||||
def __init__(self, game):
|
||||
|
@ -201,6 +201,7 @@ class NimController(object):
|
|||
self.game.model.notify_move(row, col)
|
||||
self.BUSY = False
|
||||
|
||||
|
||||
class Nim(object):
|
||||
CREATED = 0
|
||||
RUNNING = 1
|
||||
|
@ -213,11 +214,10 @@ class Nim(object):
|
|||
self.controller = NimController(self)
|
||||
|
||||
|
||||
mainscreen = turtle.Screen()
|
||||
mainscreen.mode("standard")
|
||||
mainscreen.setup(SCREENWIDTH, SCREENHEIGHT)
|
||||
|
||||
def main():
|
||||
mainscreen = turtle.Screen()
|
||||
mainscreen.mode("standard")
|
||||
mainscreen.setup(SCREENWIDTH, SCREENHEIGHT)
|
||||
nim = Nim(mainscreen)
|
||||
return "EVENTLOOP!"
|
||||
|
||||
|
|
|
@ -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:
|
||||
for t in p,q:
|
||||
t.shape("turtle")
|
||||
t.lt(36)
|
||||
|
||||
q.lt(180)
|
||||
q.lt(180)
|
||||
|
||||
for t in p, q:
|
||||
for t in p, q:
|
||||
t.begin_fill()
|
||||
for i in range(5):
|
||||
for i in range(5):
|
||||
for t in p, q:
|
||||
t.fd(50)
|
||||
t.lt(72)
|
||||
for t in p,q:
|
||||
for t in p,q:
|
||||
t.end_fill()
|
||||
t.lt(54)
|
||||
t.pu()
|
||||
t.bk(50)
|
||||
|
||||
## Want to get some info?
|
||||
return "EVENTLOOP"
|
||||
|
||||
#print(s1, s2)
|
||||
#print(p, q)
|
||||
#print(s1.turtles())
|
||||
#print(s2.turtles())
|
||||
|
||||
TK.mainloop()
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
TK.mainloop() # keep window open until user closes it
|
||||
|
|
Loading…
Reference in New Issue