mirror of https://github.com/python/cpython.git
Issue #13439: Merge branch 3.2
This commit is contained in:
commit
5645850013
130
Lib/turtle.py
130
Lib/turtle.py
|
@ -904,7 +904,7 @@ def addcomponent(self, poly, fill, outline=None):
|
||||||
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
|
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
|
||||||
>>> s = Shape("compound")
|
>>> s = Shape("compound")
|
||||||
>>> s.addcomponent(poly, "red", "blue")
|
>>> s.addcomponent(poly, "red", "blue")
|
||||||
### .. add more components and then use register_shape()
|
>>> # .. add more components and then use register_shape()
|
||||||
"""
|
"""
|
||||||
if self._type != "compound":
|
if self._type != "compound":
|
||||||
raise TurtleGraphicsError("Cannot add component to %s Shape"
|
raise TurtleGraphicsError("Cannot add component to %s Shape"
|
||||||
|
@ -1002,7 +1002,7 @@ def clear(self):
|
||||||
no backgroundimage, no eventbindings and tracing on.
|
no backgroundimage, no eventbindings and tracing on.
|
||||||
|
|
||||||
Example (for a TurtleScreen instance named screen):
|
Example (for a TurtleScreen instance named screen):
|
||||||
screen.clear()
|
>>> screen.clear()
|
||||||
|
|
||||||
Note: this method is not available as function.
|
Note: this method is not available as function.
|
||||||
"""
|
"""
|
||||||
|
@ -1076,8 +1076,8 @@ def setworldcoordinates(self, llx, lly, urx, ury):
|
||||||
Example (for a TurtleScreen instance named screen):
|
Example (for a TurtleScreen instance named screen):
|
||||||
>>> screen.setworldcoordinates(-10,-0.5,50,1.5)
|
>>> screen.setworldcoordinates(-10,-0.5,50,1.5)
|
||||||
>>> for _ in range(36):
|
>>> for _ in range(36):
|
||||||
left(10)
|
... left(10)
|
||||||
forward(0.5)
|
... forward(0.5)
|
||||||
"""
|
"""
|
||||||
if self.mode() != "world":
|
if self.mode() != "world":
|
||||||
self.mode("world")
|
self.mode("world")
|
||||||
|
@ -1181,7 +1181,7 @@ def colormode(self, cmode=None):
|
||||||
>>> screen.colormode()
|
>>> screen.colormode()
|
||||||
1.0
|
1.0
|
||||||
>>> screen.colormode(255)
|
>>> screen.colormode(255)
|
||||||
>>> turtle.pencolor(240,160,80)
|
>>> pencolor(240,160,80)
|
||||||
"""
|
"""
|
||||||
if cmode is None:
|
if cmode is None:
|
||||||
return self._colormode
|
return self._colormode
|
||||||
|
@ -1249,9 +1249,9 @@ def tracer(self, n=None, delay=None):
|
||||||
>>> screen.tracer(8, 25)
|
>>> screen.tracer(8, 25)
|
||||||
>>> dist = 2
|
>>> dist = 2
|
||||||
>>> for i in range(200):
|
>>> for i in range(200):
|
||||||
fd(dist)
|
... fd(dist)
|
||||||
rt(90)
|
... rt(90)
|
||||||
dist += 2
|
... dist += 2
|
||||||
"""
|
"""
|
||||||
if n is None:
|
if n is None:
|
||||||
return self._tracing
|
return self._tracing
|
||||||
|
@ -1278,7 +1278,7 @@ def delay(self, delay=None):
|
||||||
self._delayvalue = int(delay)
|
self._delayvalue = int(delay)
|
||||||
|
|
||||||
def _incrementudc(self):
|
def _incrementudc(self):
|
||||||
"Increment upadate counter."""
|
"""Increment upadate counter."""
|
||||||
if not TurtleScreen._RUNNING:
|
if not TurtleScreen._RUNNING:
|
||||||
TurtleScreen._RUNNNING = True
|
TurtleScreen._RUNNNING = True
|
||||||
raise Terminator
|
raise Terminator
|
||||||
|
@ -1346,16 +1346,12 @@ def onclick(self, fun, btn=1, add=None):
|
||||||
clicked point on the canvas.
|
clicked point on the canvas.
|
||||||
num -- the number of the mouse-button, defaults to 1
|
num -- the number of the mouse-button, defaults to 1
|
||||||
|
|
||||||
Example (for a TurtleScreen instance named screen
|
Example (for a TurtleScreen instance named screen)
|
||||||
and a Turtle instance named turtle):
|
|
||||||
|
|
||||||
>>> screen.onclick(turtle.goto)
|
>>> screen.onclick(goto)
|
||||||
|
>>> # Subsequently clicking into the TurtleScreen will
|
||||||
### Subsequently clicking into the TurtleScreen will
|
>>> # make the turtle move to the clicked point.
|
||||||
### make the turtle move to the clicked point.
|
|
||||||
>>> screen.onclick(None)
|
>>> screen.onclick(None)
|
||||||
|
|
||||||
### event-binding will be removed
|
|
||||||
"""
|
"""
|
||||||
self._onscreenclick(fun, btn, add)
|
self._onscreenclick(fun, btn, add)
|
||||||
|
|
||||||
|
@ -1369,20 +1365,18 @@ def onkey(self, fun, key):
|
||||||
In order to be able to register key-events, TurtleScreen
|
In order to be able to register key-events, TurtleScreen
|
||||||
must have focus. (See method listen.)
|
must have focus. (See method listen.)
|
||||||
|
|
||||||
Example (for a TurtleScreen instance named screen
|
Example (for a TurtleScreen instance named screen):
|
||||||
and a Turtle instance named turtle):
|
|
||||||
|
|
||||||
>>> def f():
|
>>> def f():
|
||||||
fd(50)
|
... fd(50)
|
||||||
lt(60)
|
... lt(60)
|
||||||
|
...
|
||||||
|
|
||||||
>>> screen.onkey(f, "Up")
|
>>> screen.onkey(f, "Up")
|
||||||
>>> screen.listen()
|
>>> screen.listen()
|
||||||
|
|
||||||
### Subsequently the turtle can be moved by
|
Subsequently the turtle can be moved by repeatedly pressing
|
||||||
### repeatedly pressing the up-arrow key,
|
the up-arrow key, consequently drawing a hexagon
|
||||||
### consequently drawing a hexagon
|
|
||||||
"""
|
"""
|
||||||
if fun is None:
|
if fun is None:
|
||||||
if key in self._keys:
|
if key in self._keys:
|
||||||
|
@ -1406,16 +1400,15 @@ def onkeypress(self, fun, key=None):
|
||||||
and a Turtle instance named turtle):
|
and a Turtle instance named turtle):
|
||||||
|
|
||||||
>>> def f():
|
>>> def f():
|
||||||
fd(50)
|
... fd(50)
|
||||||
|
... lt(60)
|
||||||
|
...
|
||||||
>>> screen.onkey(f, "Up")
|
>>> screen.onkeypress(f, "Up")
|
||||||
>>> screen.listen()
|
>>> screen.listen()
|
||||||
|
|
||||||
### Subsequently the turtle can be moved by
|
Subsequently the turtle can be moved by repeatedly pressing
|
||||||
### repeatedly pressing the up-arrow key,
|
the up-arrow key, or by keeping pressed the up-arrow key.
|
||||||
### or by keeping pressed the up-arrow key.
|
consequently drawing a hexagon.
|
||||||
### consequently drawing a hexagon.
|
|
||||||
"""
|
"""
|
||||||
if fun is None:
|
if fun is None:
|
||||||
if key in self._keys:
|
if key in self._keys:
|
||||||
|
@ -1447,12 +1440,12 @@ def ontimer(self, fun, t=0):
|
||||||
|
|
||||||
>>> running = True
|
>>> running = True
|
||||||
>>> def f():
|
>>> def f():
|
||||||
if running:
|
... if running:
|
||||||
fd(50)
|
... fd(50)
|
||||||
lt(60)
|
... lt(60)
|
||||||
screen.ontimer(f, 250)
|
... screen.ontimer(f, 250)
|
||||||
|
...
|
||||||
>>> f() ### makes the turtle marching around
|
>>> f() # makes the turtle marching around
|
||||||
>>> running = False
|
>>> running = False
|
||||||
"""
|
"""
|
||||||
self._ontimer(fun, t)
|
self._ontimer(fun, t)
|
||||||
|
@ -1496,7 +1489,7 @@ def screensize(self, canvwidth=None, canvheight=None, bg=None):
|
||||||
|
|
||||||
Example (for a Turtle instance named turtle):
|
Example (for a Turtle instance named turtle):
|
||||||
>>> turtle.screensize(2000,1500)
|
>>> turtle.screensize(2000,1500)
|
||||||
### e. g. to search for an erroneously escaped turtle ;-)
|
>>> # e.g. to search for an erroneously escaped turtle ;-)
|
||||||
"""
|
"""
|
||||||
return self._resize(canvwidth, canvheight, bg)
|
return self._resize(canvwidth, canvheight, bg)
|
||||||
|
|
||||||
|
@ -2084,7 +2077,7 @@ def pensize(self, width=None):
|
||||||
Example (for a Turtle instance named turtle):
|
Example (for a Turtle instance named turtle):
|
||||||
>>> turtle.pensize()
|
>>> turtle.pensize()
|
||||||
1
|
1
|
||||||
turtle.pensize(10) # from here on lines of width 10 are drawn
|
>>> turtle.pensize(10) # from here on lines of width 10 are drawn
|
||||||
"""
|
"""
|
||||||
if width is None:
|
if width is None:
|
||||||
return self._pensize
|
return self._pensize
|
||||||
|
@ -2559,7 +2552,7 @@ def reset(self):
|
||||||
"""Delete the turtle's drawings and restore its default values.
|
"""Delete the turtle's drawings and restore its default values.
|
||||||
|
|
||||||
No argument.
|
No argument.
|
||||||
,
|
|
||||||
Delete the turtle's drawings from the screen, re-center the turtle
|
Delete the turtle's drawings from the screen, re-center the turtle
|
||||||
and set variables to the default values.
|
and set variables to the default values.
|
||||||
|
|
||||||
|
@ -2606,7 +2599,7 @@ def undobufferentries(self):
|
||||||
|
|
||||||
Example (for a Turtle instance named turtle):
|
Example (for a Turtle instance named turtle):
|
||||||
>>> while undobufferentries():
|
>>> while undobufferentries():
|
||||||
undo()
|
... undo()
|
||||||
"""
|
"""
|
||||||
if self.undobuffer is None:
|
if self.undobuffer is None:
|
||||||
return 0
|
return 0
|
||||||
|
@ -2682,9 +2675,9 @@ def _tracer(self, flag=None, delay=None):
|
||||||
>>> turtle.tracer(8, 25)
|
>>> turtle.tracer(8, 25)
|
||||||
>>> dist = 2
|
>>> dist = 2
|
||||||
>>> for i in range(200):
|
>>> for i in range(200):
|
||||||
turtle.fd(dist)
|
... turtle.fd(dist)
|
||||||
turtle.rt(90)
|
... turtle.rt(90)
|
||||||
dist += 2
|
... dist += 2
|
||||||
"""
|
"""
|
||||||
return self.screen.tracer(flag, delay)
|
return self.screen.tracer(flag, delay)
|
||||||
|
|
||||||
|
@ -2882,7 +2875,6 @@ def tiltangle(self, angle=None):
|
||||||
>>> turtle.shapesize(5,2)
|
>>> turtle.shapesize(5,2)
|
||||||
>>> turtle.tilt(45)
|
>>> turtle.tilt(45)
|
||||||
>>> turtle.tiltangle()
|
>>> turtle.tiltangle()
|
||||||
>>>
|
|
||||||
"""
|
"""
|
||||||
if angle is None:
|
if angle is None:
|
||||||
tilt = -self._tilt * (180.0/math.pi) * self._angleOrient
|
tilt = -self._tilt * (180.0/math.pi) * self._angleOrient
|
||||||
|
@ -2927,7 +2919,7 @@ def shapetransform(self, t11=None, t12=None, t21=None, t22=None):
|
||||||
>>> turtle.shapesize(4,2)
|
>>> turtle.shapesize(4,2)
|
||||||
>>> turtle.shearfactor(-0.5)
|
>>> turtle.shearfactor(-0.5)
|
||||||
>>> turtle.shapetransform()
|
>>> turtle.shapetransform()
|
||||||
>>> (4.0, -1.0, -0.0, 2.0)
|
(4.0, -1.0, -0.0, 2.0)
|
||||||
"""
|
"""
|
||||||
if t11 is t12 is t21 is t22 is None:
|
if t11 is t12 is t21 is t22 is None:
|
||||||
return self._shapetrafo
|
return self._shapetrafo
|
||||||
|
@ -3125,7 +3117,7 @@ def clearstamps(self, n=None):
|
||||||
|
|
||||||
Example (for a Turtle instance named turtle):
|
Example (for a Turtle instance named turtle):
|
||||||
>>> for i in range(8):
|
>>> for i in range(8):
|
||||||
turtle.stamp(); turtle.fd(30)
|
... turtle.stamp(); turtle.fd(30)
|
||||||
...
|
...
|
||||||
>>> turtle.clearstamps(2)
|
>>> turtle.clearstamps(2)
|
||||||
>>> turtle.clearstamps(-2)
|
>>> turtle.clearstamps(-2)
|
||||||
|
@ -3301,9 +3293,9 @@ def filling(self):
|
||||||
Example (for a Turtle instance named turtle):
|
Example (for a Turtle instance named turtle):
|
||||||
>>> turtle.begin_fill()
|
>>> turtle.begin_fill()
|
||||||
>>> if turtle.filling():
|
>>> if turtle.filling():
|
||||||
turtle.pensize(5)
|
... turtle.pensize(5)
|
||||||
else:
|
... else:
|
||||||
turtle.pensize(3)
|
... turtle.pensize(3)
|
||||||
"""
|
"""
|
||||||
return isinstance(self._fillpath, list)
|
return isinstance(self._fillpath, list)
|
||||||
|
|
||||||
|
@ -3533,8 +3525,8 @@ def onclick(self, fun, btn=1, add=None):
|
||||||
Example for the anonymous turtle, i. e. the procedural way:
|
Example for the anonymous turtle, i. e. the procedural way:
|
||||||
|
|
||||||
>>> def turn(x, y):
|
>>> def turn(x, y):
|
||||||
left(360)
|
... left(360)
|
||||||
|
...
|
||||||
>>> onclick(turn) # Now clicking into the turtle will turn it.
|
>>> onclick(turn) # Now clicking into the turtle will turn it.
|
||||||
>>> onclick(None) # event-binding will be removed
|
>>> onclick(None) # event-binding will be removed
|
||||||
"""
|
"""
|
||||||
|
@ -3551,16 +3543,17 @@ def onrelease(self, fun, btn=1, add=None):
|
||||||
|
|
||||||
Example (for a MyTurtle instance named joe):
|
Example (for a MyTurtle instance named joe):
|
||||||
>>> class MyTurtle(Turtle):
|
>>> class MyTurtle(Turtle):
|
||||||
def glow(self,x,y):
|
... def glow(self,x,y):
|
||||||
self.fillcolor("red")
|
... self.fillcolor("red")
|
||||||
def unglow(self,x,y):
|
... def unglow(self,x,y):
|
||||||
self.fillcolor("")
|
... self.fillcolor("")
|
||||||
|
...
|
||||||
>>> joe = MyTurtle()
|
>>> joe = MyTurtle()
|
||||||
>>> joe.onclick(joe.glow)
|
>>> joe.onclick(joe.glow)
|
||||||
>>> joe.onrelease(joe.unglow)
|
>>> joe.onrelease(joe.unglow)
|
||||||
### clicking on joe turns fillcolor red,
|
|
||||||
### unclicking turns it to transparent.
|
Clicking on joe turns fillcolor red, unclicking turns it to
|
||||||
|
transparent.
|
||||||
"""
|
"""
|
||||||
self.screen._onrelease(self.turtle._item, fun, btn, add)
|
self.screen._onrelease(self.turtle._item, fun, btn, add)
|
||||||
self._update()
|
self._update()
|
||||||
|
@ -3579,9 +3572,9 @@ def ondrag(self, fun, btn=1, add=None):
|
||||||
Example (for a Turtle instance named turtle):
|
Example (for a Turtle instance named turtle):
|
||||||
>>> turtle.ondrag(turtle.goto)
|
>>> turtle.ondrag(turtle.goto)
|
||||||
|
|
||||||
### Subsequently clicking and dragging a Turtle will
|
Subsequently clicking and dragging a Turtle will move it
|
||||||
### move it across the screen thereby producing handdrawings
|
across the screen thereby producing handdrawings (if pen is
|
||||||
### (if pen is down).
|
down).
|
||||||
"""
|
"""
|
||||||
self.screen._ondrag(self.turtle._item, fun, btn, add)
|
self.screen._ondrag(self.turtle._item, fun, btn, add)
|
||||||
|
|
||||||
|
@ -3629,10 +3622,11 @@ def undo(self):
|
||||||
|
|
||||||
Example (for a Turtle instance named turtle):
|
Example (for a Turtle instance named turtle):
|
||||||
>>> for i in range(4):
|
>>> for i in range(4):
|
||||||
turtle.fd(50); turtle.lt(80)
|
... turtle.fd(50); turtle.lt(80)
|
||||||
|
...
|
||||||
>>> for i in range(8):
|
>>> for i in range(8):
|
||||||
turtle.undo()
|
... turtle.undo()
|
||||||
|
...
|
||||||
"""
|
"""
|
||||||
if self.undobuffer is None:
|
if self.undobuffer is None:
|
||||||
return
|
return
|
||||||
|
|
|
@ -399,6 +399,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #13439: Fix many errors in turtle docstrings.
|
||||||
|
|
||||||
- Issue #6715: Add a module 'lzma' for compression using the LZMA algorithm.
|
- Issue #6715: Add a module 'lzma' for compression using the LZMA algorithm.
|
||||||
Thanks to Per Øyvind Karlsen for the initial implementation.
|
Thanks to Per Øyvind Karlsen for the initial implementation.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue