Mercurial > cpython-lru_cache-weakref
annotate Lib/turtle.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | a9ee869cae40 |
| children |
| rev | line source |
|---|---|
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1 # |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2 # turtle.py: a Tkinter based turtle graphics module for Python |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3 # Version 1.1b - 4. 5. 2009 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4 # |
|
58218
89a9dd8c628d
Merged revisions 77209,77229,77359-77360,77371 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56893
diff
changeset
|
5 # Copyright (C) 2006 - 2010 Gregor Lingl |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
6 # email: glingl@aon.at |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
7 # |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
8 # This software is provided 'as-is', without any express or implied |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
9 # warranty. In no event will the authors be held liable for any damages |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
10 # arising from the use of this software. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
11 # |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
12 # Permission is granted to anyone to use this software for any purpose, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
13 # including commercial applications, and to alter it and redistribute it |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
14 # freely, subject to the following restrictions: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
15 # |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
16 # 1. The origin of this software must not be misrepresented; you must not |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
17 # claim that you wrote the original software. If you use this software |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
18 # in a product, an acknowledgment in the product documentation would be |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
19 # appreciated but is not required. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
20 # 2. Altered source versions must be plainly marked as such, and must not be |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
21 # misrepresented as being the original software. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
22 # 3. This notice may not be removed or altered from any source distribution. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
23 |
| 9585 | 24 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
25 """ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
26 Turtle graphics is a popular way for introducing programming to |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
27 kids. It was part of the original Logo programming language developed |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
28 by Wally Feurzig and Seymour Papert in 1966. |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
29 |
|
71766
bf4f65043d7d
#12677: correct turtle orientation in doc
Sandro Tosi <sandro.tosi@gmail.com>
parents:
68586
diff
changeset
|
30 Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
31 the command turtle.forward(15), and it moves (on-screen!) 15 pixels in |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
32 the direction it is facing, drawing a line as it moves. Give it the |
|
71766
bf4f65043d7d
#12677: correct turtle orientation in doc
Sandro Tosi <sandro.tosi@gmail.com>
parents:
68586
diff
changeset
|
33 command turtle.right(25), and it rotates in-place 25 degrees clockwise. |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
34 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
35 By combining together these and similar commands, intricate shapes and |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
36 pictures can easily be drawn. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
37 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
38 ----- turtle.py |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
39 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
40 This module is an extended reimplementation of turtle.py from the |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
41 Python standard distribution up to Python 2.5. (See: http://www.python.org) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
42 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
43 It tries to keep the merits of turtle.py and to be (nearly) 100% |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
44 compatible with it. This means in the first place to enable the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
45 learning programmer to use all the commands, classes and methods |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
46 interactively when using the module from within IDLE run with |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
47 the -n switch. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
48 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
49 Roughly it has the following features added: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
50 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
51 - Better animation of the turtle movements, especially of turning the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
52 turtle. So the turtles can more easily be used as a visual feedback |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
53 instrument by the (beginning) programmer. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
54 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
55 - Different turtle shapes, gif-images as turtle shapes, user defined |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
56 and user controllable turtle shapes, among them compound |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
57 (multicolored) shapes. Turtle shapes can be stretched and tilted, which |
|
51763
e0815fee24f6
Merged revisions 69819 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
49759
diff
changeset
|
58 makes turtles very versatile geometrical objects. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
59 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
60 - Fine control over turtle movement and screen updates via delay(), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
61 and enhanced tracer() and speed() methods. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
62 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
63 - Aliases for the most commonly used commands, like fd for forward etc., |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
64 following the early Logo traditions. This reduces the boring work of |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
65 typing long sequences of commands, which often occur in a natural way |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
66 when kids try to program fancy pictures on their first encounter with |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
67 turtle graphics. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
68 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
69 - Turtles now have an undo()-method with configurable undo-buffer. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
70 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
71 - Some simple commands/methods for creating event driven programs |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
72 (mouse-, key-, timer-events). Especially useful for programming games. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
73 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
74 - A scrollable Canvas class. The default scrollable Canvas can be |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
75 extended interactively as needed while playing around with the turtle(s). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
76 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
77 - A TurtleScreen class with methods controlling background color or |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
78 background image, window and canvas size and other properties of the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
79 TurtleScreen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
80 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
81 - There is a method, setworldcoordinates(), to install a user defined |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
82 coordinate-system for the TurtleScreen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
83 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
84 - The implementation uses a 2-vector class named Vec2D, derived from tuple. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
85 This class is public, so it can be imported by the application programmer, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
86 which makes certain types of computations very natural and compact. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
87 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
88 - Appearance of the TurtleScreen and the Turtles at startup/import can be |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
89 configured by means of a turtle.cfg configuration file. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
90 The default configuration mimics the appearance of the old turtle module. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
91 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
92 - If configured appropriately the module reads in docstrings from a docstring |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
93 dictionary in some different language, supplied separately and replaces |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
94 the English ones by those read in. There is a utility function |
|
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
95 write_docstringdict() to write a dictionary with the original (English) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
96 docstrings to disc, so it can serve as a template for translations. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
97 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
98 Behind the scenes there are some features included with possible |
|
72985
e19ccbbe70dd
Remove duplication.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71766
diff
changeset
|
99 extensions in mind. These will be commented and documented elsewhere. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
100 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
101 """ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
102 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
103 _ver = "turtle 1.1b- - for Python 3.1 - 4. 5. 2009" |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
104 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
105 # print(_ver) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
106 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
107 import tkinter as TK |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
108 import types |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
109 import math |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
110 import time |
|
65656
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
111 import inspect |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
112 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
113 from os.path import isfile, split, join |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
114 from copy import deepcopy |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
115 from tkinter import simpledialog |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
116 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
117 _tg_classes = ['ScrolledCanvas', 'TurtleScreen', 'Screen', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
118 'RawTurtle', 'Turtle', 'RawPen', 'Pen', 'Shape', 'Vec2D'] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
119 _tg_screen_functions = ['addshape', 'bgcolor', 'bgpic', 'bye', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
120 'clearscreen', 'colormode', 'delay', 'exitonclick', 'getcanvas', |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
121 'getshapes', 'listen', 'mainloop', 'mode', 'numinput', |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
122 'onkey', 'onkeypress', 'onkeyrelease', 'onscreenclick', 'ontimer', |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
123 'register_shape', 'resetscreen', 'screensize', 'setup', |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
124 'setworldcoordinates', 'textinput', 'title', 'tracer', 'turtles', 'update', |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
125 'window_height', 'window_width'] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
126 _tg_turtle_functions = ['back', 'backward', 'begin_fill', 'begin_poly', 'bk', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
127 'circle', 'clear', 'clearstamp', 'clearstamps', 'clone', 'color', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
128 'degrees', 'distance', 'dot', 'down', 'end_fill', 'end_poly', 'fd', |
|
56893
70eb6a13abcd
Merged revisions 75393,75416,75581,75609,75615 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53772
diff
changeset
|
129 'fillcolor', 'filling', 'forward', 'get_poly', 'getpen', 'getscreen', 'get_shapepoly', |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
130 'getturtle', 'goto', 'heading', 'hideturtle', 'home', 'ht', 'isdown', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
131 'isvisible', 'left', 'lt', 'onclick', 'ondrag', 'onrelease', 'pd', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
132 'pen', 'pencolor', 'pendown', 'pensize', 'penup', 'pos', 'position', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
133 'pu', 'radians', 'right', 'reset', 'resizemode', 'rt', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
134 'seth', 'setheading', 'setpos', 'setposition', 'settiltangle', |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
135 'setundobuffer', 'setx', 'sety', 'shape', 'shapesize', 'shapetransform', 'shearfactor', 'showturtle', |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
136 'speed', 'st', 'stamp', 'tilt', 'tiltangle', 'towards', |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
137 'turtlesize', 'undo', 'undobufferentries', 'up', 'width', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
138 'write', 'xcor', 'ycor'] |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
139 _tg_utilities = ['write_docstringdict', 'done'] |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
140 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
141 __all__ = (_tg_classes + _tg_screen_functions + _tg_turtle_functions + |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
142 _tg_utilities) # + _math_functions) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
143 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
144 _alias_list = ['addshape', 'backward', 'bk', 'fd', 'ht', 'lt', 'pd', 'pos', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
145 'pu', 'rt', 'seth', 'setpos', 'setposition', 'st', |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
146 'turtlesize', 'up', 'width'] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
147 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
148 _CFG = {"width" : 0.5, # Screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
149 "height" : 0.75, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
150 "canvwidth" : 400, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
151 "canvheight": 300, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
152 "leftright": None, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
153 "topbottom": None, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
154 "mode": "standard", # TurtleScreen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
155 "colormode": 1.0, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
156 "delay": 10, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
157 "undobuffersize": 1000, # RawTurtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
158 "shape": "classic", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
159 "pencolor" : "black", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
160 "fillcolor" : "black", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
161 "resizemode" : "noresize", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
162 "visible" : True, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
163 "language": "english", # docstrings |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
164 "exampleturtle": "turtle", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
165 "examplescreen": "screen", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
166 "title": "Python Turtle Graphics", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
167 "using_IDLE": False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
168 } |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
169 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
170 def config_dict(filename): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
171 """Convert content of config-file into dictionary.""" |
|
64405
06e5fd4959e8
Use a context manager for some file objects.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
60058
diff
changeset
|
172 with open(filename, "r") as f: |
|
06e5fd4959e8
Use a context manager for some file objects.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
60058
diff
changeset
|
173 cfglines = f.readlines() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
174 cfgdict = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
175 for line in cfglines: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
176 line = line.strip() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
177 if not line or line.startswith("#"): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
178 continue |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
179 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
180 key, value = line.split("=") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
181 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
182 print("Bad line in config-file %s:\n%s" % (filename,line)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
183 continue |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
184 key = key.strip() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
185 value = value.strip() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
186 if value in ["True", "False", "None", "''", '""']: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
187 value = eval(value) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
188 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
189 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
190 if "." in value: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
191 value = float(value) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
192 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
193 value = int(value) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
194 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
195 pass # value need not be converted |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
196 cfgdict[key] = value |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
197 return cfgdict |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
198 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
199 def readconfig(cfgdict): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
200 """Read config-files, change configuration-dict accordingly. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
201 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
202 If there is a turtle.cfg file in the current working directory, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
203 read it from there. If this contains an importconfig-value, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
204 say 'myway', construct filename turtle_mayway.cfg else use |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
205 turtle.cfg and read it from the import-directory, where |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
206 turtle.py is located. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
207 Update configuration dictionary first according to config-file, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
208 in the import directory, then according to config-file in the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
209 current working directory. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
210 If no config-file is found, the default configuration is used. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
211 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
212 default_cfg = "turtle.cfg" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
213 cfgdict1 = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
214 cfgdict2 = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
215 if isfile(default_cfg): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
216 cfgdict1 = config_dict(default_cfg) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
217 if "importconfig" in cfgdict1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
218 default_cfg = "turtle_%s.cfg" % cfgdict1["importconfig"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
219 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
220 head, tail = split(__file__) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
221 cfg_file2 = join(head, default_cfg) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
222 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
223 cfg_file2 = "" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
224 if isfile(cfg_file2): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
225 cfgdict2 = config_dict(cfg_file2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
226 _CFG.update(cfgdict2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
227 _CFG.update(cfgdict1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
228 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
229 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
230 readconfig(_CFG) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
231 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
232 print ("No configfile read, reason unknown") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
233 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
234 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
235 class Vec2D(tuple): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
236 """A 2 dimensional vector class, used as a helper class |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
237 for implementing turtle graphics. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
238 May be useful for turtle graphics programs also. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
239 Derived from tuple, so a vector is a tuple! |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
240 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
241 Provides (for a, b vectors, k number): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
242 a+b vector addition |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
243 a-b vector subtraction |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
244 a*b inner product |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
245 k*a and a*k multiplication with scalar |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
246 |a| absolute value of a |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
247 a.rotate(angle) rotation |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
248 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
249 def __new__(cls, x, y): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
250 return tuple.__new__(cls, (x, y)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
251 def __add__(self, other): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
252 return Vec2D(self[0]+other[0], self[1]+other[1]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
253 def __mul__(self, other): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
254 if isinstance(other, Vec2D): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
255 return self[0]*other[0]+self[1]*other[1] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
256 return Vec2D(self[0]*other, self[1]*other) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
257 def __rmul__(self, other): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
258 if isinstance(other, int) or isinstance(other, float): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
259 return Vec2D(self[0]*other, self[1]*other) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
260 def __sub__(self, other): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
261 return Vec2D(self[0]-other[0], self[1]-other[1]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
262 def __neg__(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
263 return Vec2D(-self[0], -self[1]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
264 def __abs__(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
265 return (self[0]**2 + self[1]**2)**0.5 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
266 def rotate(self, angle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
267 """rotate self counterclockwise by angle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
268 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
269 perp = Vec2D(-self[1], self[0]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
270 angle = angle * math.pi / 180.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
271 c, s = math.cos(angle), math.sin(angle) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
272 return Vec2D(self[0]*c+perp[0]*s, self[1]*c+perp[1]*s) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
273 def __getnewargs__(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
274 return (self[0], self[1]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
275 def __repr__(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
276 return "(%.2f,%.2f)" % self |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
277 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
278 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
279 ############################################################################## |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
280 ### From here up to line : Tkinter - Interface for turtle.py ### |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
281 ### May be replaced by an interface to some different graphics toolkit ### |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
282 ############################################################################## |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
283 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
284 ## helper functions for Scrolled Canvas, to forward Canvas-methods |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
285 ## to ScrolledCanvas class |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
286 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
287 def __methodDict(cls, _dict): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
288 """helper function for Scrolled Canvas""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
289 baseList = list(cls.__bases__) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
290 baseList.reverse() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
291 for _super in baseList: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
292 __methodDict(_super, _dict) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
293 for key, value in cls.__dict__.items(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
294 if type(value) == types.FunctionType: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
295 _dict[key] = value |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
296 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
297 def __methods(cls): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
298 """helper function for Scrolled Canvas""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
299 _dict = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
300 __methodDict(cls, _dict) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
301 return _dict.keys() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
302 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
303 __stringBody = ( |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
304 'def %(method)s(self, *args, **kw): return ' + |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
305 'self.%(attribute)s.%(method)s(*args, **kw)') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
306 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
307 def __forwardmethods(fromClass, toClass, toPart, exclude = ()): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
308 ### MANY CHANGES ### |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
309 _dict_1 = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
310 __methodDict(toClass, _dict_1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
311 _dict = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
312 mfc = __methods(fromClass) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
313 for ex in _dict_1.keys(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
314 if ex[:1] == '_' or ex[-1:] == '_' or ex in exclude or ex in mfc: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
315 pass |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
316 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
317 _dict[ex] = _dict_1[ex] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
318 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
319 for method, func in _dict.items(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
320 d = {'method': method, 'func': func} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
321 if isinstance(toPart, str): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
322 execString = \ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
323 __stringBody % {'method' : method, 'attribute' : toPart} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
324 exec(execString, d) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
325 setattr(fromClass, method, d[method]) ### NEWU! |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
326 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
327 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
328 class ScrolledCanvas(TK.Frame): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
329 """Modeled after the scrolled canvas class from Grayons's Tkinter book. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
330 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
331 Used as the default canvas, which pops up automatically when |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
332 using turtle graphics functions or the Turtle class. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
333 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
334 def __init__(self, master, width=500, height=350, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
335 canvwidth=600, canvheight=500): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
336 TK.Frame.__init__(self, master, width=width, height=height) |
|
49759
8b9bda5b8d4a
Merged revisions 67279 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49345
diff
changeset
|
337 self._rootwindow = self.winfo_toplevel() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
338 self.width, self.height = width, height |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
339 self.canvwidth, self.canvheight = canvwidth, canvheight |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
340 self.bg = "white" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
341 self._canvas = TK.Canvas(master, width=width, height=height, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
342 bg=self.bg, relief=TK.SUNKEN, borderwidth=2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
343 self.hscroll = TK.Scrollbar(master, command=self._canvas.xview, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
344 orient=TK.HORIZONTAL) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
345 self.vscroll = TK.Scrollbar(master, command=self._canvas.yview) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
346 self._canvas.configure(xscrollcommand=self.hscroll.set, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
347 yscrollcommand=self.vscroll.set) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
348 self.rowconfigure(0, weight=1, minsize=0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
349 self.columnconfigure(0, weight=1, minsize=0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
350 self._canvas.grid(padx=1, in_ = self, pady=1, row=0, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
351 column=0, rowspan=1, columnspan=1, sticky='news') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
352 self.vscroll.grid(padx=1, in_ = self, pady=1, row=0, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
353 column=1, rowspan=1, columnspan=1, sticky='news') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
354 self.hscroll.grid(padx=1, in_ = self, pady=1, row=1, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
355 column=0, rowspan=1, columnspan=1, sticky='news') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
356 self.reset() |
|
49759
8b9bda5b8d4a
Merged revisions 67279 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49345
diff
changeset
|
357 self._rootwindow.bind('<Configure>', self.onResize) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
358 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
359 def reset(self, canvwidth=None, canvheight=None, bg = None): |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
360 """Adjust canvas and scrollbars according to given canvas size.""" |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
361 if canvwidth: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
362 self.canvwidth = canvwidth |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
363 if canvheight: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
364 self.canvheight = canvheight |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
365 if bg: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
366 self.bg = bg |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
367 self._canvas.config(bg=bg, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
368 scrollregion=(-self.canvwidth//2, -self.canvheight//2, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
369 self.canvwidth//2, self.canvheight//2)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
370 self._canvas.xview_moveto(0.5*(self.canvwidth - self.width + 30) / |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
371 self.canvwidth) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
372 self._canvas.yview_moveto(0.5*(self.canvheight- self.height + 30) / |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
373 self.canvheight) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
374 self.adjustScrolls() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
375 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
376 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
377 def adjustScrolls(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
378 """ Adjust scrollbars according to window- and canvas-size. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
379 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
380 cwidth = self._canvas.winfo_width() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
381 cheight = self._canvas.winfo_height() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
382 self._canvas.xview_moveto(0.5*(self.canvwidth-cwidth)/self.canvwidth) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
383 self._canvas.yview_moveto(0.5*(self.canvheight-cheight)/self.canvheight) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
384 if cwidth < self.canvwidth or cheight < self.canvheight: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
385 self.hscroll.grid(padx=1, in_ = self, pady=1, row=1, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
386 column=0, rowspan=1, columnspan=1, sticky='news') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
387 self.vscroll.grid(padx=1, in_ = self, pady=1, row=0, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
388 column=1, rowspan=1, columnspan=1, sticky='news') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
389 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
390 self.hscroll.grid_forget() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
391 self.vscroll.grid_forget() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
392 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
393 def onResize(self, event): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
394 """self-explanatory""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
395 self.adjustScrolls() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
396 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
397 def bbox(self, *args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
398 """ 'forward' method, which canvas itself has inherited... |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
399 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
400 return self._canvas.bbox(*args) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
401 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
402 def cget(self, *args, **kwargs): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
403 """ 'forward' method, which canvas itself has inherited... |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
404 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
405 return self._canvas.cget(*args, **kwargs) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
406 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
407 def config(self, *args, **kwargs): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
408 """ 'forward' method, which canvas itself has inherited... |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
409 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
410 self._canvas.config(*args, **kwargs) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
411 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
412 def bind(self, *args, **kwargs): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
413 """ 'forward' method, which canvas itself has inherited... |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
414 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
415 self._canvas.bind(*args, **kwargs) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
416 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
417 def unbind(self, *args, **kwargs): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
418 """ 'forward' method, which canvas itself has inherited... |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
419 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
420 self._canvas.unbind(*args, **kwargs) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
421 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
422 def focus_force(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
423 """ 'forward' method, which canvas itself has inherited... |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
424 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
425 self._canvas.focus_force() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
426 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
427 __forwardmethods(ScrolledCanvas, TK.Canvas, '_canvas') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
428 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
429 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
430 class _Root(TK.Tk): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
431 """Root class for Screen based on Tkinter.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
432 def __init__(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
433 TK.Tk.__init__(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
434 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
435 def setupcanvas(self, width, height, cwidth, cheight): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
436 self._canvas = ScrolledCanvas(self, width, height, cwidth, cheight) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
437 self._canvas.pack(expand=1, fill="both") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
438 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
439 def _getcanvas(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
440 return self._canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
441 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
442 def set_geometry(self, width, height, startx, starty): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
443 self.geometry("%dx%d%+d%+d"%(width, height, startx, starty)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
444 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
445 def ondestroy(self, destroy): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
446 self.wm_protocol("WM_DELETE_WINDOW", destroy) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
447 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
448 def win_width(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
449 return self.winfo_screenwidth() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
450 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
451 def win_height(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
452 return self.winfo_screenheight() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
453 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
454 Canvas = TK.Canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
455 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
456 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
457 class TurtleScreenBase(object): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
458 """Provide the basic graphics functionality. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
459 Interface between Tkinter and turtle.py. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
460 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
461 To port turtle.py to some different graphics toolkit |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
462 a corresponding TurtleScreenBase class has to be implemented. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
463 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
464 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
465 @staticmethod |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
466 def _blankimage(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
467 """return a blank image object |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
468 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
469 img = TK.PhotoImage(width=1, height=1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
470 img.blank() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
471 return img |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
472 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
473 @staticmethod |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
474 def _image(filename): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
475 """return an image object containing the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
476 imagedata from a gif-file named filename. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
477 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
478 return TK.PhotoImage(file=filename) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
479 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
480 def __init__(self, cv): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
481 self.cv = cv |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
482 if isinstance(cv, ScrolledCanvas): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
483 w = self.cv.canvwidth |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
484 h = self.cv.canvheight |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
485 else: # expected: ordinary TK.Canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
486 w = int(self.cv.cget("width")) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
487 h = int(self.cv.cget("height")) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
488 self.cv.config(scrollregion = (-w//2, -h//2, w//2, h//2 )) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
489 self.canvwidth = w |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
490 self.canvheight = h |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
491 self.xscale = self.yscale = 1.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
492 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
493 def _createpoly(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
494 """Create an invisible polygon item on canvas self.cv) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
495 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
496 return self.cv.create_polygon((0, 0, 0, 0, 0, 0), fill="", outline="") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
497 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
498 def _drawpoly(self, polyitem, coordlist, fill=None, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
499 outline=None, width=None, top=False): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
500 """Configure polygonitem polyitem according to provided |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
501 arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
502 coordlist is sequence of coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
503 fill is filling color |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
504 outline is outline color |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
505 top is a boolean value, which specifies if polyitem |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
506 will be put on top of the canvas' displaylist so it |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
507 will not be covered by other items. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
508 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
509 cl = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
510 for x, y in coordlist: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
511 cl.append(x * self.xscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
512 cl.append(-y * self.yscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
513 self.cv.coords(polyitem, *cl) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
514 if fill is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
515 self.cv.itemconfigure(polyitem, fill=fill) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
516 if outline is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
517 self.cv.itemconfigure(polyitem, outline=outline) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
518 if width is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
519 self.cv.itemconfigure(polyitem, width=width) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
520 if top: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
521 self.cv.tag_raise(polyitem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
522 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
523 def _createline(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
524 """Create an invisible line item on canvas self.cv) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
525 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
526 return self.cv.create_line(0, 0, 0, 0, fill="", width=2, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
527 capstyle = TK.ROUND) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
528 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
529 def _drawline(self, lineitem, coordlist=None, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
530 fill=None, width=None, top=False): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
531 """Configure lineitem according to provided arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
532 coordlist is sequence of coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
533 fill is drawing color |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
534 width is width of drawn line. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
535 top is a boolean value, which specifies if polyitem |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
536 will be put on top of the canvas' displaylist so it |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
537 will not be covered by other items. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
538 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
539 if coordlist is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
540 cl = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
541 for x, y in coordlist: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
542 cl.append(x * self.xscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
543 cl.append(-y * self.yscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
544 self.cv.coords(lineitem, *cl) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
545 if fill is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
546 self.cv.itemconfigure(lineitem, fill=fill) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
547 if width is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
548 self.cv.itemconfigure(lineitem, width=width) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
549 if top: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
550 self.cv.tag_raise(lineitem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
551 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
552 def _delete(self, item): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
553 """Delete graphics item from canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
554 If item is"all" delete all graphics items. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
555 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
556 self.cv.delete(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
557 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
558 def _update(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
559 """Redraw graphics items on canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
560 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
561 self.cv.update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
562 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
563 def _delay(self, delay): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
564 """Delay subsequent canvas actions for delay ms.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
565 self.cv.after(delay) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
566 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
567 def _iscolorstring(self, color): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
568 """Check if the string color is a legal Tkinter color string. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
569 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
570 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
571 rgb = self.cv.winfo_rgb(color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
572 ok = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
573 except TK.TclError: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
574 ok = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
575 return ok |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
576 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
577 def _bgcolor(self, color=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
578 """Set canvas' backgroundcolor if color is not None, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
579 else return backgroundcolor.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
580 if color is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
581 self.cv.config(bg = color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
582 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
583 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
584 return self.cv.cget("bg") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
585 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
586 def _write(self, pos, txt, align, font, pencolor): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
587 """Write txt at pos in canvas with specified font |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
588 and color. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
589 Return text item and x-coord of right bottom corner |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
590 of text's bounding box.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
591 x, y = pos |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
592 x = x * self.xscale |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
593 y = y * self.yscale |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
594 anchor = {"left":"sw", "center":"s", "right":"se" } |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
595 item = self.cv.create_text(x-1, -y, text = txt, anchor = anchor[align], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
596 fill = pencolor, font = font) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
597 x0, y0, x1, y1 = self.cv.bbox(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
598 self.cv.update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
599 return item, x1-1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
600 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
601 ## def _dot(self, pos, size, color): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
602 ## """may be implemented for some other graphics toolkit""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
603 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
604 def _onclick(self, item, fun, num=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
605 """Bind fun to mouse-click event on turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
606 fun must be a function with two arguments, the coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
607 of the clicked point on the canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
608 num, the number of the mouse-button defaults to 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
609 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
610 if fun is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
611 self.cv.tag_unbind(item, "<Button-%s>" % num) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
612 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
613 def eventfun(event): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
614 x, y = (self.cv.canvasx(event.x)/self.xscale, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
615 -self.cv.canvasy(event.y)/self.yscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
616 fun(x, y) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
617 self.cv.tag_bind(item, "<Button-%s>" % num, eventfun, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
618 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
619 def _onrelease(self, item, fun, num=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
620 """Bind fun to mouse-button-release event on turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
621 fun must be a function with two arguments, the coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
622 of the point on the canvas where mouse button is released. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
623 num, the number of the mouse-button defaults to 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
624 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
625 If a turtle is clicked, first _onclick-event will be performed, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
626 then _onscreensclick-event. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
627 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
628 if fun is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
629 self.cv.tag_unbind(item, "<Button%s-ButtonRelease>" % num) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
630 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
631 def eventfun(event): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
632 x, y = (self.cv.canvasx(event.x)/self.xscale, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
633 -self.cv.canvasy(event.y)/self.yscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
634 fun(x, y) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
635 self.cv.tag_bind(item, "<Button%s-ButtonRelease>" % num, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
636 eventfun, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
637 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
638 def _ondrag(self, item, fun, num=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
639 """Bind fun to mouse-move-event (with pressed mouse button) on turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
640 fun must be a function with two arguments, the coordinates of the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
641 actual mouse position on the canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
642 num, the number of the mouse-button defaults to 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
643 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
644 Every sequence of mouse-move-events on a turtle is preceded by a |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
645 mouse-click event on that turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
646 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
647 if fun is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
648 self.cv.tag_unbind(item, "<Button%s-Motion>" % num) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
649 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
650 def eventfun(event): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
651 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
652 x, y = (self.cv.canvasx(event.x)/self.xscale, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
653 -self.cv.canvasy(event.y)/self.yscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
654 fun(x, y) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
655 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
656 pass |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
657 self.cv.tag_bind(item, "<Button%s-Motion>" % num, eventfun, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
658 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
659 def _onscreenclick(self, fun, num=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
660 """Bind fun to mouse-click event on canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
661 fun must be a function with two arguments, the coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
662 of the clicked point on the canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
663 num, the number of the mouse-button defaults to 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
664 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
665 If a turtle is clicked, first _onclick-event will be performed, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
666 then _onscreensclick-event. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
667 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
668 if fun is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
669 self.cv.unbind("<Button-%s>" % num) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
670 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
671 def eventfun(event): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
672 x, y = (self.cv.canvasx(event.x)/self.xscale, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
673 -self.cv.canvasy(event.y)/self.yscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
674 fun(x, y) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
675 self.cv.bind("<Button-%s>" % num, eventfun, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
676 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
677 def _onkeyrelease(self, fun, key): |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
678 """Bind fun to key-release event of key. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
679 Canvas must have focus. See method listen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
680 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
681 if fun is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
682 self.cv.unbind("<KeyRelease-%s>" % key, None) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
683 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
684 def eventfun(event): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
685 fun() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
686 self.cv.bind("<KeyRelease-%s>" % key, eventfun) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
687 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
688 def _onkeypress(self, fun, key=None): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
689 """If key is given, bind fun to key-press event of key. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
690 Otherwise bind fun to any key-press. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
691 Canvas must have focus. See method listen. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
692 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
693 if fun is None: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
694 if key is None: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
695 self.cv.unbind("<KeyPress>", None) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
696 else: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
697 self.cv.unbind("<KeyPress-%s>" % key, None) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
698 else: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
699 def eventfun(event): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
700 fun() |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
701 if key is None: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
702 self.cv.bind("<KeyPress>", eventfun) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
703 else: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
704 self.cv.bind("<KeyPress-%s>" % key, eventfun) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
705 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
706 def _listen(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
707 """Set focus on canvas (in order to collect key-events) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
708 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
709 self.cv.focus_force() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
710 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
711 def _ontimer(self, fun, t): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
712 """Install a timer, which calls fun after t milliseconds. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
713 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
714 if t == 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
715 self.cv.after_idle(fun) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
716 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
717 self.cv.after(t, fun) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
718 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
719 def _createimage(self, image): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
720 """Create and return image item on canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
721 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
722 return self.cv.create_image(0, 0, image=image) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
723 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
724 def _drawimage(self, item, pos, image): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
725 """Configure image item as to draw image object |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
726 at position (x,y) on canvas) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
727 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
728 x, y = pos |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
729 self.cv.coords(item, (x * self.xscale, -y * self.yscale)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
730 self.cv.itemconfig(item, image=image) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
731 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
732 def _setbgpic(self, item, image): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
733 """Configure image item as to draw image object |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
734 at center of canvas. Set item to the first item |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
735 in the displaylist, so it will be drawn below |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
736 any other item .""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
737 self.cv.itemconfig(item, image=image) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
738 self.cv.tag_lower(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
739 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
740 def _type(self, item): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
741 """Return 'line' or 'polygon' or 'image' depending on |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
742 type of item. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
743 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
744 return self.cv.type(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
745 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
746 def _pointlist(self, item): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
747 """returns list of coordinate-pairs of points of item |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
748 Example (for insiders): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
749 >>> from turtle import * |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
750 >>> getscreen()._pointlist(getturtle().turtle._item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
751 [(0.0, 9.9999999999999982), (0.0, -9.9999999999999982), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
752 (9.9999999999999982, 0.0)] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
753 >>> """ |
|
66407
cc9c51f9524f
Merged revisions 86697 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
65952
diff
changeset
|
754 cl = self.cv.coords(item) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
755 pl = [(cl[i], -cl[i+1]) for i in range(0, len(cl), 2)] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
756 return pl |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
757 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
758 def _setscrollregion(self, srx1, sry1, srx2, sry2): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
759 self.cv.config(scrollregion=(srx1, sry1, srx2, sry2)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
760 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
761 def _rescale(self, xscalefactor, yscalefactor): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
762 items = self.cv.find_all() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
763 for item in items: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
764 coordinates = list(self.cv.coords(item)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
765 newcoordlist = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
766 while coordinates: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
767 x, y = coordinates[:2] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
768 newcoordlist.append(x * xscalefactor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
769 newcoordlist.append(y * yscalefactor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
770 coordinates = coordinates[2:] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
771 self.cv.coords(item, *newcoordlist) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
772 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
773 def _resize(self, canvwidth=None, canvheight=None, bg=None): |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
774 """Resize the canvas the turtles are drawing on. Does |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
775 not alter the drawing window. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
776 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
777 # needs amendment |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
778 if not isinstance(self.cv, ScrolledCanvas): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
779 return self.canvwidth, self.canvheight |
|
60058
40f787b151ac
Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
58218
diff
changeset
|
780 if canvwidth is canvheight is bg is None: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
781 return self.cv.canvwidth, self.cv.canvheight |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
782 if canvwidth is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
783 self.canvwidth = canvwidth |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
784 if canvheight is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
785 self.canvheight = canvheight |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
786 self.cv.reset(canvwidth, canvheight, bg) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
787 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
788 def _window_size(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
789 """ Return the width and height of the turtle window. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
790 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
791 width = self.cv.winfo_width() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
792 if width <= 1: # the window isn't managed by a geometry manager |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
793 width = self.cv['width'] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
794 height = self.cv.winfo_height() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
795 if height <= 1: # the window isn't managed by a geometry manager |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
796 height = self.cv['height'] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
797 return width, height |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
798 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
799 def mainloop(self): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
800 """Starts event loop - calling Tkinter's mainloop function. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
801 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
802 No argument. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
803 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
804 Must be last statement in a turtle graphics program. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
805 Must NOT be used if a script is run from within IDLE in -n mode |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
806 (No subprocess) - for interactive use of turtle graphics. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
807 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
808 Example (for a TurtleScreen instance named screen): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
809 >>> screen.mainloop() |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
810 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
811 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
812 TK.mainloop() |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
813 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
814 def textinput(self, title, prompt): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
815 """Pop up a dialog window for input of a string. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
816 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
817 Arguments: title is the title of the dialog window, |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
818 prompt is a text mostly describing what information to input. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
819 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
820 Return the string input |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
821 If the dialog is canceled, return None. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
822 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
823 Example (for a TurtleScreen instance named screen): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
824 >>> screen.textinput("NIM", "Name of first player:") |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
825 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
826 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
827 return simpledialog.askstring(title, prompt) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
828 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
829 def numinput(self, title, prompt, default=None, minval=None, maxval=None): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
830 """Pop up a dialog window for input of a number. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
831 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
832 Arguments: title is the title of the dialog window, |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
833 prompt is a text mostly describing what numerical information to input. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
834 default: default value |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
835 minval: minimum value for imput |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
836 maxval: maximum value for input |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
837 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
838 The number input must be in the range minval .. maxval if these are |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
839 given. If not, a hint is issued and the dialog remains open for |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
840 correction. Return the number input. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
841 If the dialog is canceled, return None. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
842 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
843 Example (for a TurtleScreen instance named screen): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
844 >>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
845 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
846 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
847 return simpledialog.askfloat(title, prompt, initialvalue=default, |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
848 minvalue=minval, maxvalue=maxval) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
849 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
850 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
851 ############################################################################## |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
852 ### End of Tkinter - interface ### |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
853 ############################################################################## |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
854 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
855 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
856 class Terminator (Exception): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
857 """Will be raised in TurtleScreen.update, if _RUNNING becomes False. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
858 |
|
82618
3f5f961262ec
Issue #17047: remove doubled words found in 2.7 to 3.4 Lib/*,
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73816
diff
changeset
|
859 This stops execution of a turtle graphics script. |
|
3f5f961262ec
Issue #17047: remove doubled words found in 2.7 to 3.4 Lib/*,
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73816
diff
changeset
|
860 Main purpose: use in the Demo-Viewer turtle.Demo.py. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
861 """ |
|
14957
db1cce1ffb60
Don't rename Tkinter to Tk; closes bug 115714
Martin v. Löwis <martin@v.loewis.de>
parents:
9585
diff
changeset
|
862 pass |
| 9585 | 863 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
864 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
865 class TurtleGraphicsError(Exception): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
866 """Some TurtleGraphics Error |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
867 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
868 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
869 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
870 class Shape(object): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
871 """Data structure modeling shapes. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
872 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
873 attribute _type is one of "polygon", "image", "compound" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
874 attribute _data is - depending on _type a poygon-tuple, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
875 an image or a list constructed using the addcomponent method. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
876 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
877 def __init__(self, type_, data=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
878 self._type = type_ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
879 if type_ == "polygon": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
880 if isinstance(data, list): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
881 data = tuple(data) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
882 elif type_ == "image": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
883 if isinstance(data, str): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
884 if data.lower().endswith(".gif") and isfile(data): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
885 data = TurtleScreen._image(data) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
886 # else data assumed to be Photoimage |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
887 elif type_ == "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
888 data = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
889 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
890 raise TurtleGraphicsError("There is no shape type %s" % type_) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
891 self._data = data |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
892 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
893 def addcomponent(self, poly, fill, outline=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
894 """Add component to a shape of type compound. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
895 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
896 Arguments: poly is a polygon, i. e. a tuple of number pairs. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
897 fill is the fillcolor of the component, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
898 outline is the outline color of the component. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
899 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
900 call (for a Shapeobject namend s): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
901 -- s.addcomponent(((0,0), (10,10), (-10,10)), "red", "blue") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
902 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
903 Example: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
904 >>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
905 >>> s = Shape("compound") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
906 >>> s.addcomponent(poly, "red", "blue") |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
907 >>> # .. add more components and then use register_shape() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
908 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
909 if self._type != "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
910 raise TurtleGraphicsError("Cannot add component to %s Shape" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
911 % self._type) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
912 if outline is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
913 outline = fill |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
914 self._data.append([poly, fill, outline]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
915 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
916 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
917 class Tbuffer(object): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
918 """Ring buffer used as undobuffer for RawTurtle objects.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
919 def __init__(self, bufsize=10): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
920 self.bufsize = bufsize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
921 self.buffer = [[None]] * bufsize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
922 self.ptr = -1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
923 self.cumulate = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
924 def reset(self, bufsize=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
925 if bufsize is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
926 for i in range(self.bufsize): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
927 self.buffer[i] = [None] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
928 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
929 self.bufsize = bufsize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
930 self.buffer = [[None]] * bufsize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
931 self.ptr = -1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
932 def push(self, item): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
933 if self.bufsize > 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
934 if not self.cumulate: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
935 self.ptr = (self.ptr + 1) % self.bufsize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
936 self.buffer[self.ptr] = item |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
937 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
938 self.buffer[self.ptr].append(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
939 def pop(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
940 if self.bufsize > 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
941 item = self.buffer[self.ptr] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
942 if item is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
943 return None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
944 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
945 self.buffer[self.ptr] = [None] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
946 self.ptr = (self.ptr - 1) % self.bufsize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
947 return (item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
948 def nr_of_items(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
949 return self.bufsize - self.buffer.count([None]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
950 def __repr__(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
951 return str(self.buffer) + " " + str(self.ptr) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
952 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
953 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
954 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
955 class TurtleScreen(TurtleScreenBase): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
956 """Provides screen oriented methods like setbg etc. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
957 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
958 Only relies upon the methods of TurtleScreenBase and NOT |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
959 upon components of the underlying graphics toolkit - |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
960 which is Tkinter in this case. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
961 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
962 _RUNNING = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
963 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
964 def __init__(self, cv, mode=_CFG["mode"], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
965 colormode=_CFG["colormode"], delay=_CFG["delay"]): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
966 self._shapes = { |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
967 "arrow" : Shape("polygon", ((-10,0), (10,0), (0,10))), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
968 "turtle" : Shape("polygon", ((0,16), (-2,14), (-1,10), (-4,7), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
969 (-7,9), (-9,8), (-6,5), (-7,1), (-5,-3), (-8,-6), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
970 (-6,-8), (-4,-5), (0,-7), (4,-5), (6,-8), (8,-6), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
971 (5,-3), (7,1), (6,5), (9,8), (7,9), (4,7), (1,10), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
972 (2,14))), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
973 "circle" : Shape("polygon", ((10,0), (9.51,3.09), (8.09,5.88), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
974 (5.88,8.09), (3.09,9.51), (0,10), (-3.09,9.51), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
975 (-5.88,8.09), (-8.09,5.88), (-9.51,3.09), (-10,0), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
976 (-9.51,-3.09), (-8.09,-5.88), (-5.88,-8.09), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
977 (-3.09,-9.51), (-0.00,-10.00), (3.09,-9.51), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
978 (5.88,-8.09), (8.09,-5.88), (9.51,-3.09))), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
979 "square" : Shape("polygon", ((10,-10), (10,10), (-10,10), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
980 (-10,-10))), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
981 "triangle" : Shape("polygon", ((10,-5.77), (0,11.55), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
982 (-10,-5.77))), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
983 "classic": Shape("polygon", ((0,0),(-5,-9),(0,-7),(5,-9))), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
984 "blank" : Shape("image", self._blankimage()) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
985 } |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
986 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
987 self._bgpics = {"nopic" : ""} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
988 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
989 TurtleScreenBase.__init__(self, cv) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
990 self._mode = mode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
991 self._delayvalue = delay |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
992 self._colormode = _CFG["colormode"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
993 self._keys = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
994 self.clear() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
995 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
996 def clear(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
997 """Delete all drawings and all turtles from the TurtleScreen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
998 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
999 No argument. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1000 |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
1001 Reset empty TurtleScreen to its initial state: white background, |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1002 no backgroundimage, no eventbindings and tracing on. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1003 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1004 Example (for a TurtleScreen instance named screen): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1005 >>> screen.clear() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1006 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1007 Note: this method is not available as function. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1008 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1009 self._delayvalue = _CFG["delay"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1010 self._colormode = _CFG["colormode"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1011 self._delete("all") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1012 self._bgpic = self._createimage("") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1013 self._bgpicname = "nopic" |
| 9585 | 1014 self._tracing = 1 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1015 self._updatecounter = 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1016 self._turtles = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1017 self.bgcolor("white") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1018 for btn in 1, 2, 3: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1019 self.onclick(None, btn) |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1020 self.onkeypress(None) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1021 for key in self._keys[:]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1022 self.onkey(None, key) |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1023 self.onkeypress(None, key) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1024 Turtle._pen = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1025 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1026 def mode(self, mode=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1027 """Set turtle-mode ('standard', 'logo' or 'world') and perform reset. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1028 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1029 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1030 mode -- on of the strings 'standard', 'logo' or 'world' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1031 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1032 Mode 'standard' is compatible with turtle.py. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1033 Mode 'logo' is compatible with most Logo-Turtle-Graphics. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1034 Mode 'world' uses userdefined 'worldcoordinates'. *Attention*: in |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1035 this mode angles appear distorted if x/y unit-ratio doesn't equal 1. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1036 If mode is not given, return the current mode. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1037 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1038 Mode Initial turtle heading positive angles |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1039 ------------|-------------------------|------------------- |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1040 'standard' to the right (east) counterclockwise |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1041 'logo' upward (north) clockwise |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1042 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1043 Examples: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1044 >>> mode('logo') # resets turtle heading to north |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1045 >>> mode() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1046 'logo' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1047 """ |
|
60058
40f787b151ac
Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
58218
diff
changeset
|
1048 if mode is None: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1049 return self._mode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1050 mode = mode.lower() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1051 if mode not in ["standard", "logo", "world"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1052 raise TurtleGraphicsError("No turtle-graphics-mode %s" % mode) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1053 self._mode = mode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1054 if mode in ["standard", "logo"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1055 self._setscrollregion(-self.canvwidth//2, -self.canvheight//2, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1056 self.canvwidth//2, self.canvheight//2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1057 self.xscale = self.yscale = 1.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1058 self.reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1059 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1060 def setworldcoordinates(self, llx, lly, urx, ury): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1061 """Set up a user defined coordinate-system. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1062 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1063 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1064 llx -- a number, x-coordinate of lower left corner of canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1065 lly -- a number, y-coordinate of lower left corner of canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1066 urx -- a number, x-coordinate of upper right corner of canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1067 ury -- a number, y-coordinate of upper right corner of canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1068 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1069 Set up user coodinat-system and switch to mode 'world' if necessary. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1070 This performs a screen.reset. If mode 'world' is already active, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1071 all drawings are redrawn according to the new coordinates. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1072 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1073 But ATTENTION: in user-defined coordinatesystems angles may appear |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1074 distorted. (see Screen.mode()) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1075 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1076 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1077 >>> screen.setworldcoordinates(-10,-0.5,50,1.5) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1078 >>> for _ in range(36): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1079 ... left(10) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1080 ... forward(0.5) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1081 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1082 if self.mode() != "world": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1083 self.mode("world") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1084 xspan = float(urx - llx) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1085 yspan = float(ury - lly) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1086 wx, wy = self._window_size() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1087 self.screensize(wx-20, wy-20) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1088 oldxscale, oldyscale = self.xscale, self.yscale |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1089 self.xscale = self.canvwidth / xspan |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1090 self.yscale = self.canvheight / yspan |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1091 srx1 = llx * self.xscale |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1092 sry1 = -ury * self.yscale |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1093 srx2 = self.canvwidth + srx1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1094 sry2 = self.canvheight + sry1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1095 self._setscrollregion(srx1, sry1, srx2, sry2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1096 self._rescale(self.xscale/oldxscale, self.yscale/oldyscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1097 self.update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1098 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1099 def register_shape(self, name, shape=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1100 """Adds a turtle shape to TurtleScreen's shapelist. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1101 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1102 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1103 (1) name is the name of a gif-file and shape is None. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1104 Installs the corresponding image shape. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1105 !! Image-shapes DO NOT rotate when turning the turtle, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1106 !! so they do not display the heading of the turtle! |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1107 (2) name is an arbitrary string and shape is a tuple |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1108 of pairs of coordinates. Installs the corresponding |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1109 polygon shape |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1110 (3) name is an arbitrary string and shape is a |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1111 (compound) Shape object. Installs the corresponding |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1112 compound shape. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1113 To use a shape, you have to issue the command shape(shapename). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1114 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1115 call: register_shape("turtle.gif") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1116 --or: register_shape("tri", ((0,0), (10,10), (-10,10))) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1117 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1118 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1119 >>> screen.register_shape("triangle", ((5,-3),(0,5),(-5,-3))) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1120 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1121 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1122 if shape is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1123 # image |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1124 if name.lower().endswith(".gif"): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1125 shape = Shape("image", self._image(name)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1126 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1127 raise TurtleGraphicsError("Bad arguments for register_shape.\n" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1128 + "Use help(register_shape)" ) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1129 elif isinstance(shape, tuple): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1130 shape = Shape("polygon", shape) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1131 ## else shape assumed to be Shape-instance |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1132 self._shapes[name] = shape |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1133 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1134 def _colorstr(self, color): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1135 """Return color string corresponding to args. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1136 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1137 Argument may be a string or a tuple of three |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1138 numbers corresponding to actual colormode, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1139 i.e. in the range 0<=n<=colormode. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1140 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1141 If the argument doesn't represent a color, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1142 an error is raised. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1143 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1144 if len(color) == 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1145 color = color[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1146 if isinstance(color, str): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1147 if self._iscolorstring(color) or color == "": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1148 return color |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1149 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1150 raise TurtleGraphicsError("bad color string: %s" % str(color)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1151 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1152 r, g, b = color |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1153 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1154 raise TurtleGraphicsError("bad color arguments: %s" % str(color)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1155 if self._colormode == 1.0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1156 r, g, b = [round(255.0*x) for x in (r, g, b)] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1157 if not ((0 <= r <= 255) and (0 <= g <= 255) and (0 <= b <= 255)): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1158 raise TurtleGraphicsError("bad color sequence: %s" % str(color)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1159 return "#%02x%02x%02x" % (r, g, b) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1160 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1161 def _color(self, cstr): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1162 if not cstr.startswith("#"): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1163 return cstr |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1164 if len(cstr) == 7: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1165 cl = [int(cstr[i:i+2], 16) for i in (1, 3, 5)] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1166 elif len(cstr) == 4: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1167 cl = [16*int(cstr[h], 16) for h in cstr[1:]] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1168 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1169 raise TurtleGraphicsError("bad colorstring: %s" % cstr) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1170 return tuple([c * self._colormode/255 for c in cl]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1171 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1172 def colormode(self, cmode=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1173 """Return the colormode or set it to 1.0 or 255. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1174 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1175 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1176 cmode -- one of the values 1.0 or 255 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1177 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1178 r, g, b values of colortriples have to be in range 0..cmode. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1179 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1180 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1181 >>> screen.colormode() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1182 1.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1183 >>> screen.colormode(255) |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1184 >>> pencolor(240,160,80) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1185 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1186 if cmode is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1187 return self._colormode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1188 if cmode == 1.0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1189 self._colormode = float(cmode) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1190 elif cmode == 255: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1191 self._colormode = int(cmode) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1192 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1193 def reset(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1194 """Reset all Turtles on the Screen to their initial state. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1195 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1196 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1197 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1198 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1199 >>> screen.reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1200 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1201 for turtle in self._turtles: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1202 turtle._setmode(self._mode) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1203 turtle.reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1204 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1205 def turtles(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1206 """Return the list of turtles on the screen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1207 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1208 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1209 >>> screen.turtles() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1210 [<turtle.Turtle object at 0x00E11FB0>] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1211 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1212 return self._turtles |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1213 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1214 def bgcolor(self, *args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1215 """Set or return backgroundcolor of the TurtleScreen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1216 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1217 Arguments (if given): a color string or three numbers |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1218 in the range 0..colormode or a 3-tuple of such numbers. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1219 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1220 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1221 >>> screen.bgcolor("orange") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1222 >>> screen.bgcolor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1223 'orange' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1224 >>> screen.bgcolor(0.5,0,0.5) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1225 >>> screen.bgcolor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1226 '#800080' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1227 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1228 if args: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1229 color = self._colorstr(args) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1230 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1231 color = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1232 color = self._bgcolor(color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1233 if color is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1234 color = self._color(color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1235 return color |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1236 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1237 def tracer(self, n=None, delay=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1238 """Turns turtle animation on/off and set delay for update drawings. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1239 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1240 Optional arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1241 n -- nonnegative integer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1242 delay -- nonnegative integer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1243 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1244 If n is given, only each n-th regular screen update is really performed. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1245 (Can be used to accelerate the drawing of complex graphics.) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1246 Second arguments sets delay value (see RawTurtle.delay()) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1247 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1248 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1249 >>> screen.tracer(8, 25) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1250 >>> dist = 2 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1251 >>> for i in range(200): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1252 ... fd(dist) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1253 ... rt(90) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1254 ... dist += 2 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1255 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1256 if n is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1257 return self._tracing |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1258 self._tracing = int(n) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1259 self._updatecounter = 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1260 if delay is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1261 self._delayvalue = int(delay) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1262 if self._tracing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1263 self.update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1264 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1265 def delay(self, delay=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1266 """ Return or set the drawing delay in milliseconds. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1267 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1268 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1269 delay -- positive integer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1270 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1271 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1272 >>> screen.delay(15) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1273 >>> screen.delay() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1274 15 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1275 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1276 if delay is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1277 return self._delayvalue |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1278 self._delayvalue = int(delay) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1279 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1280 def _incrementudc(self): |
|
85221
e07f104133d5
#18705: fix a number of typos. Patch by Févry Thibault.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
82619
diff
changeset
|
1281 """Increment update counter.""" |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1282 if not TurtleScreen._RUNNING: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1283 TurtleScreen._RUNNNING = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1284 raise Terminator |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1285 if self._tracing > 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1286 self._updatecounter += 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1287 self._updatecounter %= self._tracing |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1288 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1289 def update(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1290 """Perform a TurtleScreen update. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1291 """ |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1292 tracing = self._tracing |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1293 self._tracing = True |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1294 for t in self.turtles(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1295 t._update_data() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1296 t._drawturtle() |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1297 self._tracing = tracing |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1298 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1299 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1300 def window_width(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1301 """ Return the width of the turtle window. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1302 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1303 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1304 >>> screen.window_width() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1305 640 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1306 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1307 return self._window_size()[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1308 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1309 def window_height(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1310 """ Return the height of the turtle window. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1311 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1312 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1313 >>> screen.window_height() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1314 480 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1315 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1316 return self._window_size()[1] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1317 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1318 def getcanvas(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1319 """Return the Canvas of this TurtleScreen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1320 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1321 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1322 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1323 Example (for a Screen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1324 >>> cv = screen.getcanvas() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1325 >>> cv |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1326 <turtle.ScrolledCanvas instance at 0x010742D8> |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1327 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1328 return self.cv |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1329 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1330 def getshapes(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1331 """Return a list of names of all currently available turtle shapes. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1332 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1333 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1334 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1335 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1336 >>> screen.getshapes() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1337 ['arrow', 'blank', 'circle', ... , 'turtle'] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1338 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1339 return sorted(self._shapes.keys()) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1340 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1341 def onclick(self, fun, btn=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1342 """Bind fun to mouse-click event on canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1343 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1344 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1345 fun -- a function with two arguments, the coordinates of the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1346 clicked point on the canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1347 num -- the number of the mouse-button, defaults to 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1348 |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1349 Example (for a TurtleScreen instance named screen) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1350 |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1351 >>> screen.onclick(goto) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1352 >>> # Subsequently clicking into the TurtleScreen will |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1353 >>> # make the turtle move to the clicked point. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1354 >>> screen.onclick(None) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1355 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1356 self._onscreenclick(fun, btn, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1357 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1358 def onkey(self, fun, key): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1359 """Bind fun to key-release event of key. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1360 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1361 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1362 fun -- a function with no arguments |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1363 key -- a string: key (e.g. "a") or key-symbol (e.g. "space") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1364 |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
1365 In order to be able to register key-events, TurtleScreen |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1366 must have focus. (See method listen.) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1367 |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1368 Example (for a TurtleScreen instance named screen): |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1369 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1370 >>> def f(): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1371 ... fd(50) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1372 ... lt(60) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1373 ... |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1374 >>> screen.onkey(f, "Up") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1375 >>> screen.listen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1376 |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1377 Subsequently the turtle can be moved by repeatedly pressing |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1378 the up-arrow key, consequently drawing a hexagon |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1379 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1380 """ |
|
60058
40f787b151ac
Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
58218
diff
changeset
|
1381 if fun is None: |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1382 if key in self._keys: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1383 self._keys.remove(key) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1384 elif key not in self._keys: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1385 self._keys.append(key) |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1386 self._onkeyrelease(fun, key) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1387 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1388 def onkeypress(self, fun, key=None): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1389 """Bind fun to key-press event of key if key is given, |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1390 or to any key-press-event if no key is given. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1391 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1392 Arguments: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1393 fun -- a function with no arguments |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1394 key -- a string: key (e.g. "a") or key-symbol (e.g. "space") |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1395 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1396 In order to be able to register key-events, TurtleScreen |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1397 must have focus. (See method listen.) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1398 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1399 Example (for a TurtleScreen instance named screen |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1400 and a Turtle instance named turtle): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1401 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1402 >>> def f(): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1403 ... fd(50) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1404 ... lt(60) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1405 ... |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1406 >>> screen.onkeypress(f, "Up") |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1407 >>> screen.listen() |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1408 |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1409 Subsequently the turtle can be moved by repeatedly pressing |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1410 the up-arrow key, or by keeping pressed the up-arrow key. |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1411 consequently drawing a hexagon. |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1412 """ |
|
60058
40f787b151ac
Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
58218
diff
changeset
|
1413 if fun is None: |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1414 if key in self._keys: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1415 self._keys.remove(key) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1416 elif key is not None and key not in self._keys: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1417 self._keys.append(key) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1418 self._onkeypress(fun, key) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1419 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1420 def listen(self, xdummy=None, ydummy=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1421 """Set focus on TurtleScreen (in order to collect key-events) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1422 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1423 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1424 Dummy arguments are provided in order |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1425 to be able to pass listen to the onclick method. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1426 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1427 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1428 >>> screen.listen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1429 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1430 self._listen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1431 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1432 def ontimer(self, fun, t=0): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1433 """Install a timer, which calls fun after t milliseconds. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1434 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1435 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1436 fun -- a function with no arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1437 t -- a number >= 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1438 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1439 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1440 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1441 >>> running = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1442 >>> def f(): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1443 ... if running: |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1444 ... fd(50) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1445 ... lt(60) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1446 ... screen.ontimer(f, 250) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1447 ... |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1448 >>> f() # makes the turtle marching around |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1449 >>> running = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1450 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1451 self._ontimer(fun, t) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1452 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1453 def bgpic(self, picname=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1454 """Set background image or return name of current backgroundimage. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1455 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1456 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1457 picname -- a string, name of a gif-file or "nopic". |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1458 |
|
68488
0991b40e895d
#11515: fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66407
diff
changeset
|
1459 If picname is a filename, set the corresponding image as background. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1460 If picname is "nopic", delete backgroundimage, if present. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1461 If picname is None, return the filename of the current backgroundimage. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1462 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1463 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1464 >>> screen.bgpic() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1465 'nopic' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1466 >>> screen.bgpic("landscape.gif") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1467 >>> screen.bgpic() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1468 'landscape.gif' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1469 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1470 if picname is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1471 return self._bgpicname |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1472 if picname not in self._bgpics: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1473 self._bgpics[picname] = self._image(picname) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1474 self._setbgpic(self._bgpic, self._bgpics[picname]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1475 self._bgpicname = picname |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1476 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1477 def screensize(self, canvwidth=None, canvheight=None, bg=None): |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
1478 """Resize the canvas the turtles are drawing on. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1479 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1480 Optional arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1481 canvwidth -- positive integer, new width of canvas in pixels |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1482 canvheight -- positive integer, new height of canvas in pixels |
|
68585
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68488
diff
changeset
|
1483 bg -- colorstring or color-tuple, new backgroundcolor |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1484 If no arguments are given, return current (canvaswidth, canvasheight) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1485 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1486 Do not alter the drawing window. To observe hidden parts of |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1487 the canvas use the scrollbars. (Can make visible those parts |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1488 of a drawing, which were outside the canvas before!) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1489 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1490 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1491 >>> turtle.screensize(2000,1500) |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
1492 >>> # e.g. to search for an erroneously escaped turtle ;-) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1493 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1494 return self._resize(canvwidth, canvheight, bg) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1495 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1496 onscreenclick = onclick |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1497 resetscreen = reset |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1498 clearscreen = clear |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1499 addshape = register_shape |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
1500 onkeyrelease = onkey |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1501 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1502 class TNavigator(object): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1503 """Navigation part of the RawTurtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1504 Implements methods for turtle movement. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1505 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1506 START_ORIENTATION = { |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1507 "standard": Vec2D(1.0, 0.0), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1508 "world" : Vec2D(1.0, 0.0), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1509 "logo" : Vec2D(0.0, 1.0) } |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1510 DEFAULT_MODE = "standard" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1511 DEFAULT_ANGLEOFFSET = 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1512 DEFAULT_ANGLEORIENT = 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1513 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1514 def __init__(self, mode=DEFAULT_MODE): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1515 self._angleOffset = self.DEFAULT_ANGLEOFFSET |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1516 self._angleOrient = self.DEFAULT_ANGLEORIENT |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1517 self._mode = mode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1518 self.undobuffer = None |
| 9585 | 1519 self.degrees() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1520 self._mode = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1521 self._setmode(mode) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1522 TNavigator.reset(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1523 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1524 def reset(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1525 """reset turtle to its initial values |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1526 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1527 Will be overwritten by parent class |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1528 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1529 self._position = Vec2D(0.0, 0.0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1530 self._orient = TNavigator.START_ORIENTATION[self._mode] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1531 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1532 def _setmode(self, mode=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1533 """Set turtle-mode to 'standard', 'world' or 'logo'. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1534 """ |
|
60058
40f787b151ac
Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
58218
diff
changeset
|
1535 if mode is None: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1536 return self._mode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1537 if mode not in ["standard", "logo", "world"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1538 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1539 self._mode = mode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1540 if mode in ["standard", "world"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1541 self._angleOffset = 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1542 self._angleOrient = 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1543 else: # mode == "logo": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1544 self._angleOffset = self._fullcircle/4. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1545 self._angleOrient = -1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1546 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1547 def _setDegreesPerAU(self, fullcircle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1548 """Helper function for degrees() and radians()""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1549 self._fullcircle = fullcircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1550 self._degreesPerAU = 360/fullcircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1551 if self._mode == "standard": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1552 self._angleOffset = 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1553 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1554 self._angleOffset = fullcircle/4. |
| 9585 | 1555 |
| 1556 def degrees(self, fullcircle=360.0): | |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1557 """ Set angle measurement units to degrees. |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1558 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1559 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1560 fullcircle - a number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1561 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1562 Set angle measurement units, i. e. set number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1563 of 'degrees' for a full circle. Dafault value is |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1564 360 degrees. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1565 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1566 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1567 >>> turtle.left(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1568 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1569 90 |
|
65952
7ab72ba38fe0
Merged revisions 85732,85778,85785,85853,85930,86008,86089 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
60058
diff
changeset
|
1570 |
|
7ab72ba38fe0
Merged revisions 85732,85778,85785,85853,85930,86008,86089 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
60058
diff
changeset
|
1571 Change angle measurement unit to grad (also known as gon, |
|
7ab72ba38fe0
Merged revisions 85732,85778,85785,85853,85930,86008,86089 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
60058
diff
changeset
|
1572 grade, or gradian and equals 1/100-th of the right angle.) |
|
7ab72ba38fe0
Merged revisions 85732,85778,85785,85853,85930,86008,86089 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
60058
diff
changeset
|
1573 >>> turtle.degrees(400.0) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1574 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1575 100 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1576 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1577 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1578 self._setDegreesPerAU(fullcircle) |
| 9585 | 1579 |
| 1580 def radians(self): | |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1581 """ Set the angle measurement units to radians. |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1582 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1583 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1584 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1585 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1586 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1587 90 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1588 >>> turtle.radians() |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1589 >>> turtle.heading() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1590 1.5707963267948966 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1591 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1592 self._setDegreesPerAU(2*math.pi) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1593 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1594 def _go(self, distance): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1595 """move turtle forward by specified distance""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1596 ende = self._position + self._orient * distance |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1597 self._goto(ende) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1598 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1599 def _rotate(self, angle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1600 """Turn turtle counterclockwise by specified angle if angle > 0.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1601 angle *= self._degreesPerAU |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1602 self._orient = self._orient.rotate(angle) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1603 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1604 def _goto(self, end): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1605 """move turtle to position end.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1606 self._position = end |
| 9585 | 1607 |
| 1608 def forward(self, distance): | |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1609 """Move the turtle forward by the specified distance. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1610 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1611 Aliases: forward | fd |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1612 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1613 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1614 distance -- a number (integer or float) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1615 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1616 Move the turtle forward by the specified distance, in the direction |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1617 the turtle is headed. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1618 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1619 Example (for a Turtle instance named turtle): |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1620 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1621 (0.00, 0.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1622 >>> turtle.forward(25) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1623 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1624 (25.00,0.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1625 >>> turtle.forward(-75) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1626 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1627 (-50.00,0.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1628 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1629 self._go(distance) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1630 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1631 def back(self, distance): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1632 """Move the turtle backward by distance. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1633 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1634 Aliases: back | backward | bk |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1635 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1636 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1637 distance -- a number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1638 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1639 Move the turtle backward by distance ,opposite to the direction the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1640 turtle is headed. Do not change the turtle's heading. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1641 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1642 Example (for a Turtle instance named turtle): |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1643 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1644 (0.00, 0.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1645 >>> turtle.backward(30) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1646 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1647 (-30.00, 0.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1648 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1649 self._go(-distance) |
| 9585 | 1650 |
| 1651 def right(self, angle): | |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1652 """Turn turtle right by angle units. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1653 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1654 Aliases: right | rt |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1655 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1656 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1657 angle -- a number (integer or float) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1658 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1659 Turn turtle right by angle units. (Units are by default degrees, |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1660 but can be set via the degrees() and radians() functions.) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1661 Angle orientation depends on mode. (See this.) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1662 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1663 Example (for a Turtle instance named turtle): |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1664 >>> turtle.heading() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1665 22.0 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1666 >>> turtle.right(45) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1667 >>> turtle.heading() |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1668 337.0 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1669 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1670 self._rotate(-angle) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1671 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1672 def left(self, angle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1673 """Turn turtle left by angle units. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1674 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1675 Aliases: left | lt |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1676 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1677 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1678 angle -- a number (integer or float) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1679 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1680 Turn turtle left by angle units. (Units are by default degrees, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1681 but can be set via the degrees() and radians() functions.) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1682 Angle orientation depends on mode. (See this.) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1683 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1684 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1685 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1686 22.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1687 >>> turtle.left(45) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1688 >>> turtle.heading() |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1689 67.0 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1690 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1691 self._rotate(angle) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1692 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1693 def pos(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1694 """Return the turtle's current location (x,y), as a Vec2D-vector. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1695 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1696 Aliases: pos | position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1697 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1698 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1699 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1700 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1701 >>> turtle.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1702 (0.00, 240.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1703 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1704 return self._position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1705 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1706 def xcor(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1707 """ Return the turtle's x coordinate. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1708 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1709 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1710 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1711 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1712 >>> reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1713 >>> turtle.left(60) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1714 >>> turtle.forward(100) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1715 >>> print turtle.xcor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1716 50.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1717 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1718 return self._position[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1719 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1720 def ycor(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1721 """ Return the turtle's y coordinate |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1722 --- |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1723 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1724 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1725 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1726 >>> reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1727 >>> turtle.left(60) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1728 >>> turtle.forward(100) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1729 >>> print turtle.ycor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1730 86.6025403784 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1731 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1732 return self._position[1] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1733 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1734 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1735 def goto(self, x, y=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1736 """Move turtle to an absolute position. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1737 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1738 Aliases: setpos | setposition | goto: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1739 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1740 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1741 x -- a number or a pair/vector of numbers |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1742 y -- a number None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1743 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1744 call: goto(x, y) # two coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1745 --or: goto((x, y)) # a pair (tuple) of coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1746 --or: goto(vec) # e.g. as returned by pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1747 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1748 Move turtle to an absolute position. If the pen is down, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1749 a line will be drawn. The turtle's orientation does not change. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1750 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1751 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1752 >>> tp = turtle.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1753 >>> tp |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1754 (0.00, 0.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1755 >>> turtle.setpos(60,30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1756 >>> turtle.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1757 (60.00,30.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1758 >>> turtle.setpos((20,80)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1759 >>> turtle.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1760 (20.00,80.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1761 >>> turtle.setpos(tp) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1762 >>> turtle.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1763 (0.00,0.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1764 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1765 if y is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1766 self._goto(Vec2D(*x)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1767 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1768 self._goto(Vec2D(x, y)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1769 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1770 def home(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1771 """Move turtle to the origin - coordinates (0,0). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1772 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1773 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1774 |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
1775 Move turtle to the origin - coordinates (0,0) and set its |
|
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
1776 heading to its start-orientation (which depends on mode). |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1777 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1778 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1779 >>> turtle.home() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1780 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1781 self.goto(0, 0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1782 self.setheading(0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1783 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1784 def setx(self, x): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1785 """Set the turtle's first coordinate to x |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1786 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1787 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1788 x -- a number (integer or float) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1789 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1790 Set the turtle's first coordinate to x, leave second coordinate |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1791 unchanged. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1792 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1793 Example (for a Turtle instance named turtle): |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1794 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1795 (0.00, 240.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1796 >>> turtle.setx(10) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1797 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1798 (10.00, 240.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1799 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1800 self._goto(Vec2D(x, self._position[1])) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1801 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1802 def sety(self, y): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1803 """Set the turtle's second coordinate to y |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1804 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1805 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1806 y -- a number (integer or float) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1807 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1808 Set the turtle's first coordinate to x, second coordinate remains |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1809 unchanged. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1810 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1811 Example (for a Turtle instance named turtle): |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1812 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1813 (0.00, 40.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1814 >>> turtle.sety(-10) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1815 >>> turtle.position() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1816 (0.00, -10.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1817 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1818 self._goto(Vec2D(self._position[0], y)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1819 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1820 def distance(self, x, y=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1821 """Return the distance from the turtle to (x,y) in turtle step units. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1822 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1823 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1824 x -- a number or a pair/vector of numbers or a turtle instance |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1825 y -- a number None None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1826 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1827 call: distance(x, y) # two coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1828 --or: distance((x, y)) # a pair (tuple) of coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1829 --or: distance(vec) # e.g. as returned by pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1830 --or: distance(mypen) # where mypen is another turtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1831 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1832 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1833 >>> turtle.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1834 (0.00, 0.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1835 >>> turtle.distance(30,40) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1836 50.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1837 >>> pen = Turtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1838 >>> pen.forward(77) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1839 >>> turtle.distance(pen) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1840 77.0 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1841 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1842 if y is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1843 pos = Vec2D(x, y) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1844 if isinstance(x, Vec2D): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1845 pos = x |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1846 elif isinstance(x, tuple): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1847 pos = Vec2D(*x) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1848 elif isinstance(x, TNavigator): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1849 pos = x._position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1850 return abs(pos - self._position) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1851 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1852 def towards(self, x, y=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1853 """Return the angle of the line from the turtle's position to (x, y). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1854 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1855 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1856 x -- a number or a pair/vector of numbers or a turtle instance |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1857 y -- a number None None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1858 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1859 call: distance(x, y) # two coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1860 --or: distance((x, y)) # a pair (tuple) of coordinates |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1861 --or: distance(vec) # e.g. as returned by pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1862 --or: distance(mypen) # where mypen is another turtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1863 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1864 Return the angle, between the line from turtle-position to position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1865 specified by x, y and the turtle's start orientation. (Depends on |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1866 modes - "standard" or "logo") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1867 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1868 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1869 >>> turtle.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1870 (10.00, 10.00) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1871 >>> turtle.towards(0,0) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1872 225.0 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
1873 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1874 if y is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1875 pos = Vec2D(x, y) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1876 if isinstance(x, Vec2D): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1877 pos = x |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1878 elif isinstance(x, tuple): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1879 pos = Vec2D(*x) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1880 elif isinstance(x, TNavigator): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1881 pos = x._position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1882 x, y = pos - self._position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1883 result = round(math.atan2(y, x)*180.0/math.pi, 10) % 360.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1884 result /= self._degreesPerAU |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1885 return (self._angleOffset + self._angleOrient*result) % self._fullcircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1886 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1887 def heading(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1888 """ Return the turtle's current heading. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1889 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1890 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1891 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1892 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1893 >>> turtle.left(67) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1894 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1895 67.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1896 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1897 x, y = self._orient |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1898 result = round(math.atan2(y, x)*180.0/math.pi, 10) % 360.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1899 result /= self._degreesPerAU |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1900 return (self._angleOffset + self._angleOrient*result) % self._fullcircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1901 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1902 def setheading(self, to_angle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1903 """Set the orientation of the turtle to to_angle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1904 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1905 Aliases: setheading | seth |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1906 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1907 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1908 to_angle -- a number (integer or float) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1909 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1910 Set the orientation of the turtle to to_angle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1911 Here are some common directions in degrees: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1912 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1913 standard - mode: logo-mode: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1914 -------------------|-------------------- |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1915 0 - east 0 - north |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1916 90 - north 90 - east |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1917 180 - west 180 - south |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1918 270 - south 270 - west |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1919 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1920 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1921 >>> turtle.setheading(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1922 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1923 90 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1924 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1925 angle = (to_angle - self.heading())*self._angleOrient |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1926 full = self._fullcircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1927 angle = (angle+full/2.)%full - full/2. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1928 self._rotate(angle) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1929 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1930 def circle(self, radius, extent = None, steps = None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1931 """ Draw a circle with given radius. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1932 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1933 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1934 radius -- a number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1935 extent (optional) -- a number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1936 steps (optional) -- an integer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1937 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1938 Draw a circle with given radius. The center is radius units left |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1939 of the turtle; extent - an angle - determines which part of the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1940 circle is drawn. If extent is not given, draw the entire circle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1941 If extent is not a full circle, one endpoint of the arc is the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1942 current pen position. Draw the arc in counterclockwise direction |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1943 if radius is positive, otherwise in clockwise direction. Finally |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1944 the direction of the turtle is changed by the amount of extent. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1945 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1946 As the circle is approximated by an inscribed regular polygon, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1947 steps determines the number of steps to use. If not given, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1948 it will be calculated automatically. Maybe used to draw regular |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1949 polygons. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1950 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1951 call: circle(radius) # full circle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1952 --or: circle(radius, extent) # arc |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1953 --or: circle(radius, extent, steps) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1954 --or: circle(radius, steps=6) # 6-sided polygon |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1955 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1956 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1957 >>> turtle.circle(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1958 >>> turtle.circle(120, 180) # semicircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1959 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1960 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1961 self.undobuffer.push(["seq"]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1962 self.undobuffer.cumulate = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1963 speed = self.speed() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1964 if extent is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1965 extent = self._fullcircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1966 if steps is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1967 frac = abs(extent)/self._fullcircle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1968 steps = 1+int(min(11+abs(radius)/6.0, 59.0)*frac) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1969 w = 1.0 * extent / steps |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1970 w2 = 0.5 * w |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1971 l = 2.0 * radius * math.sin(w2*math.pi/180.0*self._degreesPerAU) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1972 if radius < 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1973 l, w, w2 = -l, -w, -w2 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1974 tr = self._tracer() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1975 dl = self._delay() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1976 if speed == 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1977 self._tracer(0, 0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1978 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1979 self.speed(0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1980 self._rotate(w2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1981 for i in range(steps): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1982 self.speed(speed) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1983 self._go(l) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1984 self.speed(0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1985 self._rotate(w) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1986 self._rotate(-w2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1987 if speed == 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1988 self._tracer(tr, dl) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1989 self.speed(speed) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1990 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1991 self.undobuffer.cumulate = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1992 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1993 ## three dummy methods to be implemented by child class: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1994 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1995 def speed(self, s=0): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1996 """dummy method - to be overwritten by child class""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1997 def _tracer(self, a=None, b=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1998 """dummy method - to be overwritten by child class""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
1999 def _delay(self, n=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2000 """dummy method - to be overwritten by child class""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2001 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2002 fd = forward |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2003 bk = back |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2004 backward = back |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2005 rt = right |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2006 lt = left |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2007 position = pos |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2008 setpos = goto |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2009 setposition = goto |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2010 seth = setheading |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2011 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2012 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2013 class TPen(object): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2014 """Drawing part of the RawTurtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2015 Implements drawing properties. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2016 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2017 def __init__(self, resizemode=_CFG["resizemode"]): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2018 self._resizemode = resizemode # or "user" or "noresize" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2019 self.undobuffer = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2020 TPen._reset(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2021 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2022 def _reset(self, pencolor=_CFG["pencolor"], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2023 fillcolor=_CFG["fillcolor"]): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2024 self._pensize = 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2025 self._shown = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2026 self._pencolor = pencolor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2027 self._fillcolor = fillcolor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2028 self._drawing = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2029 self._speed = 3 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2030 self._stretchfactor = (1., 1.) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2031 self._shearfactor = 0. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2032 self._tilt = 0. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2033 self._shapetrafo = (1., 0., 0., 1.) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2034 self._outlinewidth = 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2035 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2036 def resizemode(self, rmode=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2037 """Set resizemode to one of the values: "auto", "user", "noresize". |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2038 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2039 (Optional) Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2040 rmode -- one of the strings "auto", "user", "noresize" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2041 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2042 Different resizemodes have the following effects: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2043 - "auto" adapts the appearance of the turtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2044 corresponding to the value of pensize. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2045 - "user" adapts the appearance of the turtle according to the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2046 values of stretchfactor and outlinewidth (outline), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2047 which are set by shapesize() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2048 - "noresize" no adaption of the turtle's appearance takes place. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2049 If no argument is given, return current resizemode. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2050 resizemode("user") is called by a call of shapesize with arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2051 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2052 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2053 Examples (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2054 >>> turtle.resizemode("noresize") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2055 >>> turtle.resizemode() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2056 'noresize' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2057 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2058 if rmode is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2059 return self._resizemode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2060 rmode = rmode.lower() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2061 if rmode in ["auto", "user", "noresize"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2062 self.pen(resizemode=rmode) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2063 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2064 def pensize(self, width=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2065 """Set or return the line thickness. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2066 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2067 Aliases: pensize | width |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2068 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2069 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2070 width -- positive number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2071 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2072 Set the line thickness to width or return it. If resizemode is set |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2073 to "auto" and turtleshape is a polygon, that polygon is drawn with |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2074 the same line thickness. If no argument is given, current pensize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2075 is returned. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2076 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2077 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2078 >>> turtle.pensize() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2079 1 |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
2080 >>> turtle.pensize(10) # from here on lines of width 10 are drawn |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2081 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2082 if width is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2083 return self._pensize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2084 self.pen(pensize=width) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2085 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2086 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2087 def penup(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2088 """Pull the pen up -- no drawing when moving. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2089 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2090 Aliases: penup | pu | up |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2091 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2092 No argument |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2093 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2094 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2095 >>> turtle.penup() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2096 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2097 if not self._drawing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2098 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2099 self.pen(pendown=False) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2100 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2101 def pendown(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2102 """Pull the pen down -- drawing when moving. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2103 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2104 Aliases: pendown | pd | down |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2105 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2106 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2107 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2108 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2109 >>> turtle.pendown() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2110 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2111 if self._drawing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2112 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2113 self.pen(pendown=True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2114 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2115 def isdown(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2116 """Return True if pen is down, False if it's up. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2117 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2118 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2119 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2120 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2121 >>> turtle.penup() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2122 >>> turtle.isdown() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2123 False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2124 >>> turtle.pendown() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2125 >>> turtle.isdown() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2126 True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2127 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2128 return self._drawing |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2129 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2130 def speed(self, speed=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2131 """ Return or set the turtle's speed. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2132 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2133 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2134 speed -- an integer in the range 0..10 or a speedstring (see below) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2135 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2136 Set the turtle's speed to an integer value in the range 0 .. 10. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2137 If no argument is given: return current speed. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2138 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2139 If input is a number greater than 10 or smaller than 0.5, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2140 speed is set to 0. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2141 Speedstrings are mapped to speedvalues in the following way: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2142 'fastest' : 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2143 'fast' : 10 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2144 'normal' : 6 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2145 'slow' : 3 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2146 'slowest' : 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2147 speeds from 1 to 10 enforce increasingly faster animation of |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2148 line drawing and turtle turning. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2149 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2150 Attention: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2151 speed = 0 : *no* animation takes place. forward/back makes turtle jump |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2152 and likewise left/right make the turtle turn instantly. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2153 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2154 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2155 >>> turtle.speed(3) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2156 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2157 speeds = {'fastest':0, 'fast':10, 'normal':6, 'slow':3, 'slowest':1 } |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2158 if speed is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2159 return self._speed |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2160 if speed in speeds: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2161 speed = speeds[speed] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2162 elif 0.5 < speed < 10.5: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2163 speed = int(round(speed)) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
2164 else: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2165 speed = 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2166 self.pen(speed=speed) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2167 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2168 def color(self, *args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2169 """Return or set the pencolor and fillcolor. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2170 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2171 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2172 Several input formats are allowed. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2173 They use 0, 1, 2, or 3 arguments as follows: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2174 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2175 color() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2176 Return the current pencolor and the current fillcolor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2177 as a pair of color specification strings as are returned |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2178 by pencolor and fillcolor. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2179 color(colorstring), color((r,g,b)), color(r,g,b) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2180 inputs as in pencolor, set both, fillcolor and pencolor, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2181 to the given value. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2182 color(colorstring1, colorstring2), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2183 color((r1,g1,b1), (r2,g2,b2)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2184 equivalent to pencolor(colorstring1) and fillcolor(colorstring2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2185 and analogously, if the other input format is used. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2186 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2187 If turtleshape is a polygon, outline and interior of that polygon |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2188 is drawn with the newly set colors. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2189 For mor info see: pencolor, fillcolor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2190 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2191 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2192 >>> turtle.color('red', 'green') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2193 >>> turtle.color() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2194 ('red', 'green') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2195 >>> colormode(255) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2196 >>> color((40, 80, 120), (160, 200, 240)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2197 >>> color() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2198 ('#285078', '#a0c8f0') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2199 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2200 if args: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2201 l = len(args) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2202 if l == 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2203 pcolor = fcolor = args[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2204 elif l == 2: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2205 pcolor, fcolor = args |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2206 elif l == 3: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2207 pcolor = fcolor = args |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2208 pcolor = self._colorstr(pcolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2209 fcolor = self._colorstr(fcolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2210 self.pen(pencolor=pcolor, fillcolor=fcolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2211 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2212 return self._color(self._pencolor), self._color(self._fillcolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2213 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2214 def pencolor(self, *args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2215 """ Return or set the pencolor. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2216 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2217 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2218 Four input formats are allowed: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2219 - pencolor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2220 Return the current pencolor as color specification string, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2221 possibly in hex-number format (see example). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2222 May be used as input to another color/pencolor/fillcolor call. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2223 - pencolor(colorstring) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2224 s is a Tk color specification string, such as "red" or "yellow" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2225 - pencolor((r, g, b)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2226 *a tuple* of r, g, and b, which represent, an RGB color, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2227 and each of r, g, and b are in the range 0..colormode, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2228 where colormode is either 1.0 or 255 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2229 - pencolor(r, g, b) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2230 r, g, and b represent an RGB color, and each of r, g, and b |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2231 are in the range 0..colormode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2232 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2233 If turtleshape is a polygon, the outline of that polygon is drawn |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2234 with the newly set pencolor. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2235 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2236 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2237 >>> turtle.pencolor('brown') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2238 >>> tup = (0.2, 0.8, 0.55) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2239 >>> turtle.pencolor(tup) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2240 >>> turtle.pencolor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2241 '#33cc8c' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2242 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2243 if args: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2244 color = self._colorstr(args) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2245 if color == self._pencolor: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2246 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2247 self.pen(pencolor=color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2248 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2249 return self._color(self._pencolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2250 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2251 def fillcolor(self, *args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2252 """ Return or set the fillcolor. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2253 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2254 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2255 Four input formats are allowed: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2256 - fillcolor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2257 Return the current fillcolor as color specification string, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2258 possibly in hex-number format (see example). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2259 May be used as input to another color/pencolor/fillcolor call. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2260 - fillcolor(colorstring) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2261 s is a Tk color specification string, such as "red" or "yellow" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2262 - fillcolor((r, g, b)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2263 *a tuple* of r, g, and b, which represent, an RGB color, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2264 and each of r, g, and b are in the range 0..colormode, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2265 where colormode is either 1.0 or 255 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2266 - fillcolor(r, g, b) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2267 r, g, and b represent an RGB color, and each of r, g, and b |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2268 are in the range 0..colormode |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2269 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2270 If turtleshape is a polygon, the interior of that polygon is drawn |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2271 with the newly set fillcolor. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2272 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2273 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2274 >>> turtle.fillcolor('violet') |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2275 >>> col = turtle.pencolor() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2276 >>> turtle.fillcolor(col) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2277 >>> turtle.fillcolor(0, .5, 0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2278 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2279 if args: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2280 color = self._colorstr(args) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2281 if color == self._fillcolor: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2282 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2283 self.pen(fillcolor=color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2284 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2285 return self._color(self._fillcolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2286 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2287 def showturtle(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2288 """Makes the turtle visible. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2289 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2290 Aliases: showturtle | st |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2291 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2292 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2293 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2294 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2295 >>> turtle.hideturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2296 >>> turtle.showturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2297 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2298 self.pen(shown=True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2299 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2300 def hideturtle(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2301 """Makes the turtle invisible. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2302 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2303 Aliases: hideturtle | ht |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2304 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2305 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2306 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2307 It's a good idea to do this while you're in the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2308 middle of a complicated drawing, because hiding |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2309 the turtle speeds up the drawing observably. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2310 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2311 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2312 >>> turtle.hideturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2313 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2314 self.pen(shown=False) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2315 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2316 def isvisible(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2317 """Return True if the Turtle is shown, False if it's hidden. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2318 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2319 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2320 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2321 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2322 >>> turtle.hideturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2323 >>> print turtle.isvisible(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2324 False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2325 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2326 return self._shown |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2327 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2328 def pen(self, pen=None, **pendict): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2329 """Return or set the pen's attributes. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2330 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2331 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2332 pen -- a dictionary with some or all of the below listed keys. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2333 **pendict -- one or more keyword-arguments with the below |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2334 listed keys as keywords. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2335 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2336 Return or set the pen's attributes in a 'pen-dictionary' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2337 with the following key/value pairs: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2338 "shown" : True/False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2339 "pendown" : True/False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2340 "pencolor" : color-string or color-tuple |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2341 "fillcolor" : color-string or color-tuple |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2342 "pensize" : positive number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2343 "speed" : number in range 0..10 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2344 "resizemode" : "auto" or "user" or "noresize" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2345 "stretchfactor": (positive number, positive number) |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2346 "shearfactor": number |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2347 "outline" : positive number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2348 "tilt" : number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2349 |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
2350 This dictionary can be used as argument for a subsequent |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2351 pen()-call to restore the former pen-state. Moreover one |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2352 or more of these attributes can be provided as keyword-arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2353 This can be used to set several pen attributes in one statement. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2354 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2355 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2356 Examples (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2357 >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2358 >>> turtle.pen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2359 {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2360 'pencolor': 'red', 'pendown': True, 'fillcolor': 'black', |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2361 'stretchfactor': (1,1), 'speed': 3, 'shearfactor': 0.0} |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2362 >>> penstate=turtle.pen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2363 >>> turtle.color("yellow","") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2364 >>> turtle.penup() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2365 >>> turtle.pen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2366 {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2367 'pencolor': 'yellow', 'pendown': False, 'fillcolor': '', |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2368 'stretchfactor': (1,1), 'speed': 3, 'shearfactor': 0.0} |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2369 >>> p.pen(penstate, fillcolor="green") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2370 >>> p.pen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2371 {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2372 'pencolor': 'red', 'pendown': True, 'fillcolor': 'green', |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2373 'stretchfactor': (1,1), 'speed': 3, 'shearfactor': 0.0} |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2374 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2375 _pd = {"shown" : self._shown, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2376 "pendown" : self._drawing, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2377 "pencolor" : self._pencolor, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2378 "fillcolor" : self._fillcolor, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2379 "pensize" : self._pensize, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2380 "speed" : self._speed, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2381 "resizemode" : self._resizemode, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2382 "stretchfactor" : self._stretchfactor, |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2383 "shearfactor" : self._shearfactor, |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2384 "outline" : self._outlinewidth, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2385 "tilt" : self._tilt |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2386 } |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2387 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2388 if not (pen or pendict): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2389 return _pd |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2390 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2391 if isinstance(pen, dict): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2392 p = pen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2393 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2394 p = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2395 p.update(pendict) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2396 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2397 _p_buf = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2398 for key in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2399 _p_buf[key] = _pd[key] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2400 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2401 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2402 self.undobuffer.push(("pen", _p_buf)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2403 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2404 newLine = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2405 if "pendown" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2406 if self._drawing != p["pendown"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2407 newLine = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2408 if "pencolor" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2409 if isinstance(p["pencolor"], tuple): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2410 p["pencolor"] = self._colorstr((p["pencolor"],)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2411 if self._pencolor != p["pencolor"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2412 newLine = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2413 if "pensize" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2414 if self._pensize != p["pensize"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2415 newLine = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2416 if newLine: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2417 self._newLine() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2418 if "pendown" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2419 self._drawing = p["pendown"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2420 if "pencolor" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2421 self._pencolor = p["pencolor"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2422 if "pensize" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2423 self._pensize = p["pensize"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2424 if "fillcolor" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2425 if isinstance(p["fillcolor"], tuple): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2426 p["fillcolor"] = self._colorstr((p["fillcolor"],)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2427 self._fillcolor = p["fillcolor"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2428 if "speed" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2429 self._speed = p["speed"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2430 if "resizemode" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2431 self._resizemode = p["resizemode"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2432 if "stretchfactor" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2433 sf = p["stretchfactor"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2434 if isinstance(sf, (int, float)): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2435 sf = (sf, sf) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2436 self._stretchfactor = sf |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2437 if "shearfactor" in p: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2438 self._shearfactor = p["shearfactor"] |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2439 if "outline" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2440 self._outlinewidth = p["outline"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2441 if "shown" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2442 self._shown = p["shown"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2443 if "tilt" in p: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2444 self._tilt = p["tilt"] |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2445 if "stretchfactor" in p or "tilt" in p or "shearfactor" in p: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2446 scx, scy = self._stretchfactor |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2447 shf = self._shearfactor |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2448 sa, ca = math.sin(self._tilt), math.cos(self._tilt) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2449 self._shapetrafo = ( scx*ca, scy*(shf*ca + sa), |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2450 -scx*sa, scy*(ca - shf*sa)) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2451 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2452 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2453 ## three dummy methods to be implemented by child class: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2454 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2455 def _newLine(self, usePos = True): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2456 """dummy method - to be overwritten by child class""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2457 def _update(self, count=True, forced=False): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2458 """dummy method - to be overwritten by child class""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2459 def _color(self, args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2460 """dummy method - to be overwritten by child class""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2461 def _colorstr(self, args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2462 """dummy method - to be overwritten by child class""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2463 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2464 width = pensize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2465 up = penup |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2466 pu = penup |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2467 pd = pendown |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2468 down = pendown |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2469 st = showturtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2470 ht = hideturtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2471 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2472 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2473 class _TurtleImage(object): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2474 """Helper class: Datatype to store Turtle attributes |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2475 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2476 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2477 def __init__(self, screen, shapeIndex): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2478 self.screen = screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2479 self._type = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2480 self._setshape(shapeIndex) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2481 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2482 def _setshape(self, shapeIndex): |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2483 screen = self.screen |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2484 self.shapeIndex = shapeIndex |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2485 if self._type == "polygon" == screen._shapes[shapeIndex]._type: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2486 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2487 if self._type == "image" == screen._shapes[shapeIndex]._type: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2488 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2489 if self._type in ["image", "polygon"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2490 screen._delete(self._item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2491 elif self._type == "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2492 for item in self._item: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2493 screen._delete(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2494 self._type = screen._shapes[shapeIndex]._type |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2495 if self._type == "polygon": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2496 self._item = screen._createpoly() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2497 elif self._type == "image": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2498 self._item = screen._createimage(screen._shapes["blank"]._data) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2499 elif self._type == "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2500 self._item = [screen._createpoly() for item in |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2501 screen._shapes[shapeIndex]._data] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2502 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2503 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2504 class RawTurtle(TPen, TNavigator): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2505 """Animation part of the RawTurtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2506 Puts RawTurtle upon a TurtleScreen and provides tools for |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
2507 its animation. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2508 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2509 screens = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2510 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2511 def __init__(self, canvas=None, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2512 shape=_CFG["shape"], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2513 undobuffersize=_CFG["undobuffersize"], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2514 visible=_CFG["visible"]): |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
2515 if isinstance(canvas, _Screen): |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2516 self.screen = canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2517 elif isinstance(canvas, TurtleScreen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2518 if canvas not in RawTurtle.screens: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2519 RawTurtle.screens.append(canvas) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2520 self.screen = canvas |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2521 elif isinstance(canvas, (ScrolledCanvas, Canvas)): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2522 for screen in RawTurtle.screens: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2523 if screen.cv == canvas: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2524 self.screen = screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2525 break |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
2526 else: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2527 self.screen = TurtleScreen(canvas) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2528 RawTurtle.screens.append(self.screen) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2529 else: |
|
85221
e07f104133d5
#18705: fix a number of typos. Patch by Févry Thibault.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
82619
diff
changeset
|
2530 raise TurtleGraphicsError("bad canvas argument %s" % canvas) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2531 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2532 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2533 TNavigator.__init__(self, screen.mode()) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2534 TPen.__init__(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2535 screen._turtles.append(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2536 self.drawingLineItem = screen._createline() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2537 self.turtle = _TurtleImage(screen, shape) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2538 self._poly = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2539 self._creatingPoly = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2540 self._fillitem = self._fillpath = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2541 self._shown = visible |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2542 self._hidden_from_screen = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2543 self.currentLineItem = screen._createline() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2544 self.currentLine = [self._position] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2545 self.items = [self.currentLineItem] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2546 self.stampItems = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2547 self._undobuffersize = undobuffersize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2548 self.undobuffer = Tbuffer(undobuffersize) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2549 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2550 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2551 def reset(self): |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
2552 """Delete the turtle's drawings and restore its default values. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2553 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2554 No argument. |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
2555 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2556 Delete the turtle's drawings from the screen, re-center the turtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2557 and set variables to the default values. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2558 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2559 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2560 >>> turtle.position() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2561 (0.00,-22.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2562 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2563 100.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2564 >>> turtle.reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2565 >>> turtle.position() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2566 (0.00,0.00) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2567 >>> turtle.heading() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2568 0.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2569 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2570 TNavigator.reset(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2571 TPen._reset(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2572 self._clear() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2573 self._drawturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2574 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2575 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2576 def setundobuffer(self, size): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2577 """Set or disable undobuffer. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2578 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2579 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2580 size -- an integer or None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2581 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2582 If size is an integer an empty undobuffer of given size is installed. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2583 Size gives the maximum number of turtle-actions that can be undone |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2584 by the undo() function. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2585 If size is None, no undobuffer is present. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2586 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2587 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2588 >>> turtle.setundobuffer(42) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2589 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2590 if size is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2591 self.undobuffer = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2592 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2593 self.undobuffer = Tbuffer(size) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2594 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2595 def undobufferentries(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2596 """Return count of entries in the undobuffer. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2597 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2598 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2599 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2600 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2601 >>> while undobufferentries(): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
2602 ... undo() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2603 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2604 if self.undobuffer is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2605 return 0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2606 return self.undobuffer.nr_of_items() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2607 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2608 def _clear(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2609 """Delete all of pen's drawings""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2610 self._fillitem = self._fillpath = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2611 for item in self.items: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2612 self.screen._delete(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2613 self.currentLineItem = self.screen._createline() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2614 self.currentLine = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2615 if self._drawing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2616 self.currentLine.append(self._position) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2617 self.items = [self.currentLineItem] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2618 self.clearstamps() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2619 self.setundobuffer(self._undobuffersize) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2620 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2621 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2622 def clear(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2623 """Delete the turtle's drawings from the screen. Do not move turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2624 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2625 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2626 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2627 Delete the turtle's drawings from the screen. Do not move turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2628 State and position of the turtle as well as drawings of other |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2629 turtles are not affected. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2630 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2631 Examples (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2632 >>> turtle.clear() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2633 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2634 self._clear() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2635 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2636 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2637 def _update_data(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2638 self.screen._incrementudc() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2639 if self.screen._updatecounter != 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2640 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2641 if len(self.currentLine)>1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2642 self.screen._drawline(self.currentLineItem, self.currentLine, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2643 self._pencolor, self._pensize) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2644 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2645 def _update(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2646 """Perform a Turtle-data update. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2647 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2648 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2649 if screen._tracing == 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2650 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2651 elif screen._tracing == 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2652 self._update_data() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2653 self._drawturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2654 screen._update() # TurtleScreenBase |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2655 screen._delay(screen._delayvalue) # TurtleScreenBase |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2656 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2657 self._update_data() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2658 if screen._updatecounter == 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2659 for t in screen.turtles(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2660 t._drawturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2661 screen._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2662 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2663 def _tracer(self, flag=None, delay=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2664 """Turns turtle animation on/off and set delay for update drawings. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2665 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2666 Optional arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2667 n -- nonnegative integer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2668 delay -- nonnegative integer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2669 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2670 If n is given, only each n-th regular screen update is really performed. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2671 (Can be used to accelerate the drawing of complex graphics.) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2672 Second arguments sets delay value (see RawTurtle.delay()) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2673 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2674 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2675 >>> turtle.tracer(8, 25) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2676 >>> dist = 2 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2677 >>> for i in range(200): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
2678 ... turtle.fd(dist) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
2679 ... turtle.rt(90) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
2680 ... dist += 2 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2681 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2682 return self.screen.tracer(flag, delay) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2683 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2684 def _color(self, args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2685 return self.screen._color(args) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2686 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2687 def _colorstr(self, args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2688 return self.screen._colorstr(args) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2689 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2690 def _cc(self, args): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2691 """Convert colortriples to hexstrings. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2692 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2693 if isinstance(args, str): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2694 return args |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2695 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2696 r, g, b = args |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2697 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2698 raise TurtleGraphicsError("bad color arguments: %s" % str(args)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2699 if self.screen._colormode == 1.0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2700 r, g, b = [round(255.0*x) for x in (r, g, b)] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2701 if not ((0 <= r <= 255) and (0 <= g <= 255) and (0 <= b <= 255)): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2702 raise TurtleGraphicsError("bad color sequence: %s" % str(args)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2703 return "#%02x%02x%02x" % (r, g, b) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2704 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2705 def clone(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2706 """Create and return a clone of the turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2707 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2708 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2709 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2710 Create and return a clone of the turtle with same position, heading |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2711 and turtle properties. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2712 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2713 Example (for a Turtle instance named mick): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2714 mick = Turtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2715 joe = mick.clone() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2716 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2717 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2718 self._newLine(self._drawing) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2719 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2720 turtle = self.turtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2721 self.screen = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2722 self.turtle = None # too make self deepcopy-able |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2723 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2724 q = deepcopy(self) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2725 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2726 self.screen = screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2727 self.turtle = turtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2728 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2729 q.screen = screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2730 q.turtle = _TurtleImage(screen, self.turtle.shapeIndex) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2731 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2732 screen._turtles.append(q) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2733 ttype = screen._shapes[self.turtle.shapeIndex]._type |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2734 if ttype == "polygon": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2735 q.turtle._item = screen._createpoly() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2736 elif ttype == "image": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2737 q.turtle._item = screen._createimage(screen._shapes["blank"]._data) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2738 elif ttype == "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2739 q.turtle._item = [screen._createpoly() for item in |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2740 screen._shapes[self.turtle.shapeIndex]._data] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2741 q.currentLineItem = screen._createline() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2742 q._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2743 return q |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2744 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2745 def shape(self, name=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2746 """Set turtle shape to shape with given name / return current shapename. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2747 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2748 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2749 name -- a string, which is a valid shapename |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2750 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2751 Set turtle shape to shape with given name or, if name is not given, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2752 return name of current shape. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2753 Shape with name must exist in the TurtleScreen's shape dictionary. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2754 Initially there are the following polygon shapes: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2755 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic'. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2756 To learn about how to deal with shapes see Screen-method register_shape. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2757 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2758 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2759 >>> turtle.shape() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2760 'arrow' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2761 >>> turtle.shape("turtle") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2762 >>> turtle.shape() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2763 'turtle' |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2764 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2765 if name is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2766 return self.turtle.shapeIndex |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2767 if not name in self.screen.getshapes(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2768 raise TurtleGraphicsError("There is no shape named %s" % name) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2769 self.turtle._setshape(name) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2770 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2771 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2772 def shapesize(self, stretch_wid=None, stretch_len=None, outline=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2773 """Set/return turtle's stretchfactors/outline. Set resizemode to "user". |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2774 |
|
85221
e07f104133d5
#18705: fix a number of typos. Patch by Févry Thibault.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
82619
diff
changeset
|
2775 Optional arguments: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2776 stretch_wid : positive number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2777 stretch_len : positive number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2778 outline : positive number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2779 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2780 Return or set the pen's attributes x/y-stretchfactors and/or outline. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2781 Set resizemode to "user". |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2782 If and only if resizemode is set to "user", the turtle will be displayed |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2783 stretched according to its stretchfactors: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2784 stretch_wid is stretchfactor perpendicular to orientation |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2785 stretch_len is stretchfactor in direction of turtles orientation. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2786 outline determines the width of the shapes's outline. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2787 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2788 Examples (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2789 >>> turtle.resizemode("user") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2790 >>> turtle.shapesize(5, 5, 12) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2791 >>> turtle.shapesize(outline=8) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2792 """ |
|
60058
40f787b151ac
Merged revisions 79297,79310,79382,79425-79427,79450 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
58218
diff
changeset
|
2793 if stretch_wid is stretch_len is outline is None: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2794 stretch_wid, stretch_len = self._stretchfactor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2795 return stretch_wid, stretch_len, self._outlinewidth |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2796 if stretch_wid == 0 or stretch_len == 0: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2797 raise TurtleGraphicsError("stretch_wid/stretch_len must not be zero") |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2798 if stretch_wid is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2799 if stretch_len is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2800 stretchfactor = stretch_wid, stretch_wid |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2801 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2802 stretchfactor = stretch_wid, stretch_len |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2803 elif stretch_len is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2804 stretchfactor = self._stretchfactor[0], stretch_len |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2805 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2806 stretchfactor = self._stretchfactor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2807 if outline is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2808 outline = self._outlinewidth |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2809 self.pen(resizemode="user", |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2810 stretchfactor=stretchfactor, outline=outline) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2811 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2812 def shearfactor(self, shear=None): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2813 """Set or return the current shearfactor. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2814 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2815 Optional argument: shear -- number, tangent of the shear angle |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2816 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2817 Shear the turtleshape according to the given shearfactor shear, |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2818 which is the tangent of the shear angle. DO NOT change the |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2819 turtle's heading (direction of movement). |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2820 If shear is not given: return the current shearfactor, i. e. the |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2821 tangent of the shear angle, by which lines parallel to the |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2822 heading of the turtle are sheared. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2823 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2824 Examples (for a Turtle instance named turtle): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2825 >>> turtle.shape("circle") |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2826 >>> turtle.shapesize(5,2) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2827 >>> turtle.shearfactor(0.5) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2828 >>> turtle.shearfactor() |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2829 >>> 0.5 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2830 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2831 if shear is None: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2832 return self._shearfactor |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2833 self.pen(resizemode="user", shearfactor=shear) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2834 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2835 def settiltangle(self, angle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2836 """Rotate the turtleshape to point in the specified direction |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2837 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2838 Argument: angle -- number |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2839 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2840 Rotate the turtleshape to point in the direction specified by angle, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2841 regardless of its current tilt-angle. DO NOT change the turtle's |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2842 heading (direction of movement). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2843 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2844 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2845 Examples (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2846 >>> turtle.shape("circle") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2847 >>> turtle.shapesize(5,2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2848 >>> turtle.settiltangle(45) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2849 >>> stamp() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2850 >>> turtle.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2851 >>> turtle.settiltangle(-45) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2852 >>> stamp() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2853 >>> turtle.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2854 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2855 tilt = -angle * self._degreesPerAU * self._angleOrient |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2856 tilt = (tilt * math.pi / 180.0) % (2*math.pi) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2857 self.pen(resizemode="user", tilt=tilt) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2858 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2859 def tiltangle(self, angle=None): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2860 """Set or return the current tilt-angle. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2861 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2862 Optional argument: angle -- number |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2863 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2864 Rotate the turtleshape to point in the direction specified by angle, |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2865 regardless of its current tilt-angle. DO NOT change the turtle's |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2866 heading (direction of movement). |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2867 If angle is not given: return the current tilt-angle, i. e. the angle |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2868 between the orientation of the turtleshape and the heading of the |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2869 turtle (its direction of movement). |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2870 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2871 Deprecated since Python 3.1 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2872 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2873 Examples (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2874 >>> turtle.shape("circle") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2875 >>> turtle.shapesize(5,2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2876 >>> turtle.tilt(45) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2877 >>> turtle.tiltangle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2878 """ |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2879 if angle is None: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2880 tilt = -self._tilt * (180.0/math.pi) * self._angleOrient |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2881 return (tilt / self._degreesPerAU) % self._fullcircle |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2882 else: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2883 self.settiltangle(angle) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2884 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2885 def tilt(self, angle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2886 """Rotate the turtleshape by angle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2887 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2888 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2889 angle - a number |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2890 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2891 Rotate the turtleshape by angle from its current tilt-angle, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2892 but do NOT change the turtle's heading (direction of movement). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2893 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2894 Examples (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2895 >>> turtle.shape("circle") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2896 >>> turtle.shapesize(5,2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2897 >>> turtle.tilt(30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2898 >>> turtle.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2899 >>> turtle.tilt(30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2900 >>> turtle.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2901 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2902 self.settiltangle(angle + self.tiltangle()) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2903 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2904 def shapetransform(self, t11=None, t12=None, t21=None, t22=None): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2905 """Set or return the current transformation matrix of the turtle shape. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2906 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2907 Optional arguments: t11, t12, t21, t22 -- numbers. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2908 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2909 If none of the matrix elements are given, return the transformation |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2910 matrix. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2911 Otherwise set the given elements and transform the turtleshape |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2912 according to the matrix consisting of first row t11, t12 and |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2913 second row t21, 22. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2914 Modify stretchfactor, shearfactor and tiltangle according to the |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2915 given matrix. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2916 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2917 Examples (for a Turtle instance named turtle): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2918 >>> turtle.shape("square") |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2919 >>> turtle.shapesize(4,2) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2920 >>> turtle.shearfactor(-0.5) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2921 >>> turtle.shapetransform() |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
2922 (4.0, -1.0, -0.0, 2.0) |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2923 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2924 if t11 is t12 is t21 is t22 is None: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2925 return self._shapetrafo |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2926 m11, m12, m21, m22 = self._shapetrafo |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2927 if t11 is not None: m11 = t11 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2928 if t12 is not None: m12 = t12 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2929 if t21 is not None: m21 = t21 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2930 if t22 is not None: m22 = t22 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2931 if t11 * t22 - t12 * t21 == 0: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2932 raise TurtleGraphicsError("Bad shape transform matrix: must not be singular") |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2933 self._shapetrafo = (m11, m12, m21, m22) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2934 alfa = math.atan2(-m21, m11) % (2 * math.pi) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2935 sa, ca = math.sin(alfa), math.cos(alfa) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2936 a11, a12, a21, a22 = (ca*m11 - sa*m21, ca*m12 - sa*m22, |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2937 sa*m11 + ca*m21, sa*m12 + ca*m22) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2938 self._stretchfactor = a11, a22 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2939 self._shearfactor = a12/a22 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2940 self._tilt = alfa |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2941 self._update() |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2942 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2943 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2944 def _polytrafo(self, poly): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2945 """Computes transformed polygon shapes from a shape |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2946 according to current position and heading. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2947 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2948 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2949 p0, p1 = self._position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2950 e0, e1 = self._orient |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2951 e = Vec2D(e0, e1 * screen.yscale / screen.xscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2952 e0, e1 = (1.0 / abs(e)) * e |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2953 return [(p0+(e1*x+e0*y)/screen.xscale, p1+(-e0*x+e1*y)/screen.yscale) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2954 for (x, y) in poly] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2955 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2956 def get_shapepoly(self): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2957 """Return the current shape polygon as tuple of coordinate pairs. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2958 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2959 No argument. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2960 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2961 Examples (for a Turtle instance named turtle): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2962 >>> turtle.shape("square") |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2963 >>> turtle.shapetransform(4, -1, 0, 2) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2964 >>> turtle.get_shapepoly() |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2965 ((50, -20), (30, 20), (-50, 20), (-30, -20)) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2966 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2967 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2968 shape = self.screen._shapes[self.turtle.shapeIndex] |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2969 if shape._type == "polygon": |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2970 return self._getshapepoly(shape._data, shape._type == "compound") |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2971 # else return None |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2972 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2973 def _getshapepoly(self, polygon, compound=False): |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2974 """Calculate transformed shape polygon according to resizemode |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2975 and shapetransform. |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2976 """ |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2977 if self._resizemode == "user" or compound: |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2978 t11, t12, t21, t22 = self._shapetrafo |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2979 elif self._resizemode == "auto": |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2980 l = max(1, self._pensize/5.0) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2981 t11, t12, t21, t22 = l, 0, 0, l |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2982 elif self._resizemode == "noresize": |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2983 return polygon |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2984 return tuple([(t11*x + t12*y, t21*x + t22*y) for (x, y) in polygon]) |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2985 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2986 def _drawturtle(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2987 """Manages the correct rendering of the turtle with respect to |
|
51776
d06a3ebf306f
Merged revisions 69846 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51765
diff
changeset
|
2988 its shape, resizemode, stretch and tilt etc.""" |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2989 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2990 shape = screen._shapes[self.turtle.shapeIndex] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2991 ttype = shape._type |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2992 titem = self.turtle._item |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2993 if self._shown and screen._updatecounter == 0 and screen._tracing > 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2994 self._hidden_from_screen = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2995 tshape = shape._data |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
2996 if ttype == "polygon": |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2997 if self._resizemode == "noresize": w = 1 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2998 elif self._resizemode == "auto": w = self._pensize |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
2999 else: w =self._outlinewidth |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3000 shape = self._polytrafo(self._getshapepoly(tshape)) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3001 fc, oc = self._fillcolor, self._pencolor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3002 screen._drawpoly(titem, shape, fill=fc, outline=oc, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3003 width=w, top=True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3004 elif ttype == "image": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3005 screen._drawimage(titem, self._position, tshape) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3006 elif ttype == "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3007 for item, (poly, fc, oc) in zip(titem, tshape): |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3008 poly = self._polytrafo(self._getshapepoly(poly, True)) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3009 screen._drawpoly(item, poly, fill=self._cc(fc), |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3010 outline=self._cc(oc), width=self._outlinewidth, top=True) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3011 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3012 if self._hidden_from_screen: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3013 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3014 if ttype == "polygon": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3015 screen._drawpoly(titem, ((0, 0), (0, 0), (0, 0)), "", "") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3016 elif ttype == "image": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3017 screen._drawimage(titem, self._position, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3018 screen._shapes["blank"]._data) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3019 elif ttype == "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3020 for item in titem: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3021 screen._drawpoly(item, ((0, 0), (0, 0), (0, 0)), "", "") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3022 self._hidden_from_screen = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3023 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3024 ############################## stamp stuff ############################### |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3025 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3026 def stamp(self): |
|
51765
37e4df9fdaa6
Merged revisions 69821 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51763
diff
changeset
|
3027 """Stamp a copy of the turtleshape onto the canvas and return its id. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3028 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3029 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3030 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3031 Stamp a copy of the turtle shape onto the canvas at the current |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3032 turtle position. Return a stamp_id for that stamp, which can be |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3033 used to delete it by calling clearstamp(stamp_id). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3034 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3035 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3036 >>> turtle.color("blue") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3037 >>> turtle.stamp() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3038 13 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3039 >>> turtle.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3040 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3041 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3042 shape = screen._shapes[self.turtle.shapeIndex] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3043 ttype = shape._type |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3044 tshape = shape._data |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3045 if ttype == "polygon": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3046 stitem = screen._createpoly() |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3047 if self._resizemode == "noresize": w = 1 |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3048 elif self._resizemode == "auto": w = self._pensize |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3049 else: w =self._outlinewidth |
|
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3050 shape = self._polytrafo(self._getshapepoly(tshape)) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3051 fc, oc = self._fillcolor, self._pencolor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3052 screen._drawpoly(stitem, shape, fill=fc, outline=oc, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3053 width=w, top=True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3054 elif ttype == "image": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3055 stitem = screen._createimage("") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3056 screen._drawimage(stitem, self._position, tshape) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3057 elif ttype == "compound": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3058 stitem = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3059 for element in tshape: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3060 item = screen._createpoly() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3061 stitem.append(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3062 stitem = tuple(stitem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3063 for item, (poly, fc, oc) in zip(stitem, tshape): |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3064 poly = self._polytrafo(self._getshapepoly(poly, True)) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3065 screen._drawpoly(item, poly, fill=self._cc(fc), |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3066 outline=self._cc(oc), width=self._outlinewidth, top=True) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3067 self.stampItems.append(stitem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3068 self.undobuffer.push(("stamp", stitem)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3069 return stitem |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3070 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3071 def _clearstamp(self, stampid): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3072 """does the work for clearstamp() and clearstamps() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3073 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3074 if stampid in self.stampItems: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3075 if isinstance(stampid, tuple): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3076 for subitem in stampid: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3077 self.screen._delete(subitem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3078 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3079 self.screen._delete(stampid) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3080 self.stampItems.remove(stampid) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3081 # Delete stampitem from undobuffer if necessary |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3082 # if clearstamp is called directly. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3083 item = ("stamp", stampid) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3084 buf = self.undobuffer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3085 if item not in buf.buffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3086 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3087 index = buf.buffer.index(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3088 buf.buffer.remove(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3089 if index <= buf.ptr: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3090 buf.ptr = (buf.ptr - 1) % buf.bufsize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3091 buf.buffer.insert((buf.ptr+1)%buf.bufsize, [None]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3092 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3093 def clearstamp(self, stampid): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3094 """Delete stamp with given stampid |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3095 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3096 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3097 stampid - an integer, must be return value of previous stamp() call. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3098 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3099 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3100 >>> turtle.color("blue") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3101 >>> astamp = turtle.stamp() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3102 >>> turtle.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3103 >>> turtle.clearstamp(astamp) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3104 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3105 self._clearstamp(stampid) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3106 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3107 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3108 def clearstamps(self, n=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3109 """Delete all or first/last n of turtle's stamps. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3110 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3111 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3112 n -- an integer |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3113 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3114 If n is None, delete all of pen's stamps, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3115 else if n > 0 delete first n stamps |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3116 else if n < 0 delete last n stamps. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3117 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3118 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3119 >>> for i in range(8): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3120 ... turtle.stamp(); turtle.fd(30) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3121 ... |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3122 >>> turtle.clearstamps(2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3123 >>> turtle.clearstamps(-2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3124 >>> turtle.clearstamps() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3125 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3126 if n is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3127 toDelete = self.stampItems[:] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3128 elif n >= 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3129 toDelete = self.stampItems[:n] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3130 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3131 toDelete = self.stampItems[n:] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3132 for item in toDelete: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3133 self._clearstamp(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3134 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3135 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3136 def _goto(self, end): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3137 """Move the pen to the point end, thereby drawing a line |
|
85221
e07f104133d5
#18705: fix a number of typos. Patch by Févry Thibault.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
82619
diff
changeset
|
3138 if pen is down. All other methods for turtle movement depend |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3139 on this one. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3140 """ |
|
65687
613c7b596fe7
Fixed a typo in a comment.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
65656
diff
changeset
|
3141 ## Version with undo-stuff |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3142 go_modes = ( self._drawing, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3143 self._pencolor, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3144 self._pensize, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3145 isinstance(self._fillpath, list)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3146 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3147 undo_entry = ("go", self._position, end, go_modes, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3148 (self.currentLineItem, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3149 self.currentLine[:], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3150 screen._pointlist(self.currentLineItem), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3151 self.items[:]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3152 ) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3153 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3154 self.undobuffer.push(undo_entry) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3155 start = self._position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3156 if self._speed and screen._tracing == 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3157 diff = (end-start) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3158 diffsq = (diff[0]*screen.xscale)**2 + (diff[1]*screen.yscale)**2 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3159 nhops = 1+int((diffsq**0.5)/(3*(1.1**self._speed)*self._speed)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3160 delta = diff * (1.0/nhops) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3161 for n in range(1, nhops): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3162 if n == 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3163 top = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3164 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3165 top = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3166 self._position = start + delta * n |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3167 if self._drawing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3168 screen._drawline(self.drawingLineItem, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3169 (start, self._position), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3170 self._pencolor, self._pensize, top) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3171 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3172 if self._drawing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3173 screen._drawline(self.drawingLineItem, ((0, 0), (0, 0)), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3174 fill="", width=self._pensize) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3175 # Turtle now at end, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3176 if self._drawing: # now update currentLine |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3177 self.currentLine.append(end) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3178 if isinstance(self._fillpath, list): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3179 self._fillpath.append(end) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3180 ###### vererbung!!!!!!!!!!!!!!!!!!!!!! |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3181 self._position = end |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3182 if self._creatingPoly: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3183 self._poly.append(end) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3184 if len(self.currentLine) > 42: # 42! answer to the ultimate question |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3185 # of life, the universe and everything |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3186 self._newLine() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3187 self._update() #count=True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3188 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3189 def _undogoto(self, entry): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3190 """Reverse a _goto. Used for undo() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3191 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3192 old, new, go_modes, coodata = entry |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3193 drawing, pc, ps, filling = go_modes |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3194 cLI, cL, pl, items = coodata |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3195 screen = self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3196 if abs(self._position - new) > 0.5: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3197 print ("undogoto: HALLO-DA-STIMMT-WAS-NICHT!") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3198 # restore former situation |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3199 self.currentLineItem = cLI |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3200 self.currentLine = cL |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3201 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3202 if pl == [(0, 0), (0, 0)]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3203 usepc = "" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3204 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3205 usepc = pc |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3206 screen._drawline(cLI, pl, fill=usepc, width=ps) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3207 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3208 todelete = [i for i in self.items if (i not in items) and |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3209 (screen._type(i) == "line")] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3210 for i in todelete: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3211 screen._delete(i) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3212 self.items.remove(i) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3213 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3214 start = old |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3215 if self._speed and screen._tracing == 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3216 diff = old - new |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3217 diffsq = (diff[0]*screen.xscale)**2 + (diff[1]*screen.yscale)**2 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3218 nhops = 1+int((diffsq**0.5)/(3*(1.1**self._speed)*self._speed)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3219 delta = diff * (1.0/nhops) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3220 for n in range(1, nhops): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3221 if n == 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3222 top = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3223 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3224 top = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3225 self._position = new + delta * n |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3226 if drawing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3227 screen._drawline(self.drawingLineItem, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3228 (start, self._position), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3229 pc, ps, top) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3230 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3231 if drawing: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3232 screen._drawline(self.drawingLineItem, ((0, 0), (0, 0)), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3233 fill="", width=ps) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3234 # Turtle now at position old, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3235 self._position = old |
|
68585
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68488
diff
changeset
|
3236 ## if undo is done during creating a polygon, the last vertex |
|
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68488
diff
changeset
|
3237 ## will be deleted. if the polygon is entirely deleted, |
|
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68488
diff
changeset
|
3238 ## creatingPoly will be set to False. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3239 ## Polygons created before the last one will not be affected by undo() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3240 if self._creatingPoly: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3241 if len(self._poly) > 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3242 self._poly.pop() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3243 if self._poly == []: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3244 self._creatingPoly = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3245 self._poly = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3246 if filling: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3247 if self._fillpath == []: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3248 self._fillpath = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3249 print("Unwahrscheinlich in _undogoto!") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3250 elif self._fillpath is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3251 self._fillpath.pop() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3252 self._update() #count=True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3253 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3254 def _rotate(self, angle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3255 """Turns pen clockwise by angle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3256 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3257 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3258 self.undobuffer.push(("rot", angle, self._degreesPerAU)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3259 angle *= self._degreesPerAU |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3260 neworient = self._orient.rotate(angle) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3261 tracing = self.screen._tracing |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3262 if tracing == 1 and self._speed > 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3263 anglevel = 3.0 * self._speed |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3264 steps = 1 + int(abs(angle)/anglevel) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3265 delta = 1.0*angle/steps |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3266 for _ in range(steps): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3267 self._orient = self._orient.rotate(delta) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3268 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3269 self._orient = neworient |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3270 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3271 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3272 def _newLine(self, usePos=True): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3273 """Closes current line item and starts a new one. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3274 Remark: if current line became too long, animation |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3275 performance (via _drawline) slowed down considerably. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3276 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3277 if len(self.currentLine) > 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3278 self.screen._drawline(self.currentLineItem, self.currentLine, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3279 self._pencolor, self._pensize) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3280 self.currentLineItem = self.screen._createline() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3281 self.items.append(self.currentLineItem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3282 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3283 self.screen._drawline(self.currentLineItem, top=True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3284 self.currentLine = [] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3285 if usePos: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3286 self.currentLine = [self._position] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3287 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3288 def filling(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3289 """Return fillstate (True if filling, False else). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3290 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3291 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3292 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3293 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3294 >>> turtle.begin_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3295 >>> if turtle.filling(): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3296 ... turtle.pensize(5) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3297 ... else: |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3298 ... turtle.pensize(3) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3299 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3300 return isinstance(self._fillpath, list) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3301 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3302 def begin_fill(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3303 """Called just before drawing a shape to be filled. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3304 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3305 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3306 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3307 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3308 >>> turtle.color("black", "red") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3309 >>> turtle.begin_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3310 >>> turtle.circle(60) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3311 >>> turtle.end_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3312 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3313 if not self.filling(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3314 self._fillitem = self.screen._createpoly() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3315 self.items.append(self._fillitem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3316 self._fillpath = [self._position] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3317 self._newLine() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3318 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3319 self.undobuffer.push(("beginfill", self._fillitem)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3320 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3321 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3322 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3323 def end_fill(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3324 """Fill the shape drawn after the call begin_fill(). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3325 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3326 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3327 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3328 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3329 >>> turtle.color("black", "red") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3330 >>> turtle.begin_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3331 >>> turtle.circle(60) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3332 >>> turtle.end_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3333 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3334 if self.filling(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3335 if len(self._fillpath) > 2: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3336 self.screen._drawpoly(self._fillitem, self._fillpath, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3337 fill=self._fillcolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3338 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3339 self.undobuffer.push(("dofill", self._fillitem)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3340 self._fillitem = self._fillpath = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3341 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3342 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3343 def dot(self, size=None, *color): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3344 """Draw a dot with diameter size, using color. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3345 |
|
68488
0991b40e895d
#11515: fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66407
diff
changeset
|
3346 Optional arguments: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3347 size -- an integer >= 1 (if given) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3348 color -- a colorstring or a numeric color tuple |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3349 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3350 Draw a circular dot with diameter size, using color. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3351 If size is not given, the maximum of pensize+4 and 2*pensize is used. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3352 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3353 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3354 >>> turtle.dot() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3355 >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3356 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3357 if not color: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3358 if isinstance(size, (str, tuple)): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3359 color = self._colorstr(size) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3360 size = self._pensize + max(self._pensize, 4) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3361 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3362 color = self._pencolor |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3363 if not size: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3364 size = self._pensize + max(self._pensize, 4) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3365 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3366 if size is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3367 size = self._pensize + max(self._pensize, 4) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3368 color = self._colorstr(color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3369 if hasattr(self.screen, "_dot"): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3370 item = self.screen._dot(self._position, size, color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3371 self.items.append(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3372 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3373 self.undobuffer.push(("dot", item)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3374 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3375 pen = self.pen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3376 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3377 self.undobuffer.push(["seq"]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3378 self.undobuffer.cumulate = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3379 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3380 if self.resizemode() == 'auto': |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3381 self.ht() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3382 self.pendown() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3383 self.pensize(size) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3384 self.pencolor(color) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3385 self.forward(0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3386 finally: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3387 self.pen(pen) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3388 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3389 self.undobuffer.cumulate = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3390 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3391 def _write(self, txt, align, font): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3392 """Performs the writing for write() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3393 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3394 item, end = self.screen._write(self._position, txt, align, font, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3395 self._pencolor) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3396 self.items.append(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3397 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3398 self.undobuffer.push(("wri", item)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3399 return end |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3400 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3401 def write(self, arg, move=False, align="left", font=("Arial", 8, "normal")): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3402 """Write text at the current turtle position. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3403 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3404 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3405 arg -- info, which is to be written to the TurtleScreen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3406 move (optional) -- True/False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3407 align (optional) -- one of the strings "left", "center" or right" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3408 font (optional) -- a triple (fontname, fontsize, fonttype) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3409 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3410 Write text - the string representation of arg - at the current |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3411 turtle position according to align ("left", "center" or right") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3412 and with the given font. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3413 If move is True, the pen is moved to the bottom-right corner |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3414 of the text. By default, move is False. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3415 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3416 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3417 >>> turtle.write('Home = ', True, align="center") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3418 >>> turtle.write((0,0), True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3419 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3420 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3421 self.undobuffer.push(["seq"]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3422 self.undobuffer.cumulate = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3423 end = self._write(str(arg), align.lower(), font) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3424 if move: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3425 x, y = self.pos() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3426 self.setpos(end, y) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3427 if self.undobuffer: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3428 self.undobuffer.cumulate = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3429 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3430 def begin_poly(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3431 """Start recording the vertices of a polygon. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3432 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3433 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3434 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3435 Start recording the vertices of a polygon. Current turtle position |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3436 is first point of polygon. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3437 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3438 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3439 >>> turtle.begin_poly() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3440 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3441 self._poly = [self._position] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3442 self._creatingPoly = True |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3443 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3444 def end_poly(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3445 """Stop recording the vertices of a polygon. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3446 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3447 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3448 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3449 Stop recording the vertices of a polygon. Current turtle position is |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3450 last point of polygon. This will be connected with the first point. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3451 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3452 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3453 >>> turtle.end_poly() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3454 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3455 self._creatingPoly = False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3456 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3457 def get_poly(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3458 """Return the lastly recorded polygon. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3459 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3460 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3461 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3462 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3463 >>> p = turtle.get_poly() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3464 >>> turtle.register_shape("myFavouriteShape", p) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3465 """ |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3466 ## check if there is any poly? |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3467 if self._poly is not None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3468 return tuple(self._poly) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3469 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3470 def getscreen(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3471 """Return the TurtleScreen object, the turtle is drawing on. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3472 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3473 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3474 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3475 Return the TurtleScreen object, the turtle is drawing on. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3476 So TurtleScreen-methods can be called for that object. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3477 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3478 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3479 >>> ts = turtle.getscreen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3480 >>> ts |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3481 <turtle.TurtleScreen object at 0x0106B770> |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3482 >>> ts.bgcolor("pink") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3483 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3484 return self.screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3485 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3486 def getturtle(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3487 """Return the Turtleobject itself. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3488 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3489 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3490 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3491 Only reasonable use: as a function to return the 'anonymous turtle': |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
3492 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
3493 Example: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3494 >>> pet = getturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3495 >>> pet.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3496 >>> pet |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3497 <turtle.Turtle object at 0x0187D810> |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3498 >>> turtles() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3499 [<turtle.Turtle object at 0x0187D810>] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3500 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3501 return self |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3502 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3503 getpen = getturtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3504 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3505 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3506 ################################################################ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3507 ### screen oriented methods recurring to methods of TurtleScreen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3508 ################################################################ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3509 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3510 def _delay(self, delay=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3511 """Set delay value which determines speed of turtle animation. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3512 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3513 return self.screen.delay(delay) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3514 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3515 def onclick(self, fun, btn=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3516 """Bind fun to mouse-click event on this turtle on canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3517 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3518 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3519 fun -- a function with two arguments, to which will be assigned |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3520 the coordinates of the clicked point on the canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3521 num -- number of the mouse-button defaults to 1 (left mouse button). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3522 add -- True or False. If True, new binding will be added, otherwise |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3523 it will replace a former binding. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3524 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3525 Example for the anonymous turtle, i. e. the procedural way: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3526 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3527 >>> def turn(x, y): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3528 ... left(360) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3529 ... |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3530 >>> onclick(turn) # Now clicking into the turtle will turn it. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3531 >>> onclick(None) # event-binding will be removed |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
3532 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3533 self.screen._onclick(self.turtle._item, fun, btn, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3534 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3535 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3536 def onrelease(self, fun, btn=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3537 """Bind fun to mouse-button-release event on this turtle on canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3538 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3539 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3540 fun -- a function with two arguments, to which will be assigned |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3541 the coordinates of the clicked point on the canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3542 num -- number of the mouse-button defaults to 1 (left mouse button). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3543 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3544 Example (for a MyTurtle instance named joe): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3545 >>> class MyTurtle(Turtle): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3546 ... def glow(self,x,y): |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3547 ... self.fillcolor("red") |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3548 ... def unglow(self,x,y): |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3549 ... self.fillcolor("") |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3550 ... |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3551 >>> joe = MyTurtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3552 >>> joe.onclick(joe.glow) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3553 >>> joe.onrelease(joe.unglow) |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3554 |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3555 Clicking on joe turns fillcolor red, unclicking turns it to |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3556 transparent. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3557 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3558 self.screen._onrelease(self.turtle._item, fun, btn, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3559 self._update() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3560 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3561 def ondrag(self, fun, btn=1, add=None): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3562 """Bind fun to mouse-move event on this turtle on canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3563 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3564 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3565 fun -- a function with two arguments, to which will be assigned |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3566 the coordinates of the clicked point on the canvas. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3567 num -- number of the mouse-button defaults to 1 (left mouse button). |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3568 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3569 Every sequence of mouse-move-events on a turtle is preceded by a |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3570 mouse-click event on that turtle. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3571 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3572 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3573 >>> turtle.ondrag(turtle.goto) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3574 |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3575 Subsequently clicking and dragging a Turtle will move it |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3576 across the screen thereby producing handdrawings (if pen is |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3577 down). |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3578 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3579 self.screen._ondrag(self.turtle._item, fun, btn, add) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3580 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3581 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3582 def _undo(self, action, data): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3583 """Does the main part of the work for undo() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3584 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3585 if self.undobuffer is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3586 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3587 if action == "rot": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3588 angle, degPAU = data |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3589 self._rotate(-angle*degPAU/self._degreesPerAU) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3590 dummy = self.undobuffer.pop() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3591 elif action == "stamp": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3592 stitem = data[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3593 self.clearstamp(stitem) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3594 elif action == "go": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3595 self._undogoto(data) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3596 elif action in ["wri", "dot"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3597 item = data[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3598 self.screen._delete(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3599 self.items.remove(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3600 elif action == "dofill": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3601 item = data[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3602 self.screen._drawpoly(item, ((0, 0),(0, 0),(0, 0)), |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3603 fill="", outline="") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3604 elif action == "beginfill": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3605 item = data[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3606 self._fillitem = self._fillpath = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3607 if item in self.items: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3608 self.screen._delete(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3609 self.items.remove(item) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3610 elif action == "pen": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3611 TPen.pen(self, data[0]) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3612 self.undobuffer.pop() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3613 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3614 def undo(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3615 """undo (repeatedly) the last turtle action. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3616 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3617 No argument. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3618 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3619 undo (repeatedly) the last turtle action. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3620 Number of available undo actions is determined by the size of |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3621 the undobuffer. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3622 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3623 Example (for a Turtle instance named turtle): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3624 >>> for i in range(4): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3625 ... turtle.fd(50); turtle.lt(80) |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3626 ... |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3627 >>> for i in range(8): |
|
73816
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3628 ... turtle.undo() |
|
cc559e1e3bd8
Issue #13439: Fix many errors in turtle docstrings.
Petri Lehtinen <petri@digip.org>
parents:
72985
diff
changeset
|
3629 ... |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3630 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3631 if self.undobuffer is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3632 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3633 item = self.undobuffer.pop() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3634 action = item[0] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3635 data = item[1:] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3636 if action == "seq": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3637 while data: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3638 item = data.pop() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3639 self._undo(item[0], item[1:]) |
| 9585 | 3640 else: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3641 self._undo(action, data) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3642 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3643 turtlesize = shapesize |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3644 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3645 RawPen = RawTurtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3646 |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3647 ### Screen - Singleton ######################## |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3648 |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3649 def Screen(): |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3650 """Return the singleton screen object. |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3651 If none exists at the moment, create a new one and return it, |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3652 else return the existing one.""" |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3653 if Turtle._screen is None: |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3654 Turtle._screen = _Screen() |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3655 return Turtle._screen |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3656 |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3657 class _Screen(TurtleScreen): |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3658 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3659 _root = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3660 _canvas = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3661 _title = _CFG["title"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3662 |
| 9585 | 3663 def __init__(self): |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3664 # XXX there is no need for this code to be conditional, |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3665 # as there will be only a single _Screen instance, anyway |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3666 # XXX actually, the turtle demo is injecting root window, |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3667 # so perhaps the conditional creation of a root should be |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3668 # preserved (perhaps by passing it as an optional parameter) |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3669 if _Screen._root is None: |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3670 _Screen._root = self._root = _Root() |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3671 self._root.title(_Screen._title) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3672 self._root.ondestroy(self._destroy) |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3673 if _Screen._canvas is None: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3674 width = _CFG["width"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3675 height = _CFG["height"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3676 canvwidth = _CFG["canvwidth"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3677 canvheight = _CFG["canvheight"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3678 leftright = _CFG["leftright"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3679 topbottom = _CFG["topbottom"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3680 self._root.setupcanvas(width, height, canvwidth, canvheight) |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3681 _Screen._canvas = self._root._getcanvas() |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3682 TurtleScreen.__init__(self, _Screen._canvas) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3683 self.setup(width, height, leftright, topbottom) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3684 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3685 def setup(self, width=_CFG["width"], height=_CFG["height"], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3686 startx=_CFG["leftright"], starty=_CFG["topbottom"]): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3687 """ Set the size and position of the main window. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3688 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3689 Arguments: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3690 width: as integer a size in pixels, as float a fraction of the screen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3691 Default is 50% of screen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3692 height: as integer the height in pixels, as float a fraction of the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3693 screen. Default is 75% of screen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3694 startx: if positive, starting position in pixels from the left |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3695 edge of the screen, if negative from the right edge |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3696 Default, startx=None is to center window horizontally. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3697 starty: if positive, starting position in pixels from the top |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3698 edge of the screen, if negative from the bottom edge |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3699 Default, starty=None is to center window vertically. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3700 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3701 Examples (for a Screen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3702 >>> screen.setup (width=200, height=200, startx=0, starty=0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3703 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3704 sets window to 200x200 pixels, in upper left of screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3705 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3706 >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3707 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3708 sets window to 75% of screen by 50% of screen and centers |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3709 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3710 if not hasattr(self._root, "set_geometry"): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3711 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3712 sw = self._root.win_width() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3713 sh = self._root.win_height() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3714 if isinstance(width, float) and 0 <= width <= 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3715 width = sw*width |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3716 if startx is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3717 startx = (sw - width) / 2 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3718 if isinstance(height, float) and 0 <= height <= 1: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3719 height = sh*height |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3720 if starty is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3721 starty = (sh - height) / 2 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3722 self._root.set_geometry(width, height, startx, starty) |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3723 self.update() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3724 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3725 def title(self, titlestring): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3726 """Set title of turtle-window |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3727 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3728 Argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3729 titlestring -- a string, to appear in the titlebar of the |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3730 turtle graphics window. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3731 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3732 This is a method of Screen-class. Not available for TurtleScreen- |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3733 objects. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3734 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3735 Example (for a Screen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3736 >>> screen.title("Welcome to the turtle-zoo!") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3737 """ |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3738 if _Screen._root is not None: |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3739 _Screen._root.title(titlestring) |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3740 _Screen._title = titlestring |
| 9585 | 3741 |
| 3742 def _destroy(self): | |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3743 root = self._root |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3744 if root is _Screen._root: |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3745 Turtle._pen = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3746 Turtle._screen = None |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3747 _Screen._root = None |
|
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3748 _Screen._canvas = None |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3749 TurtleScreen._RUNNING = True |
| 9585 | 3750 root.destroy() |
|
15308
847ae40074d4
Make reindent.py happy (convert everything to 4-space indents!).
Fred Drake <fdrake@acm.org>
parents:
14957
diff
changeset
|
3751 |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3752 def bye(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3753 """Shut the turtlegraphics window. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3754 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3755 Example (for a TurtleScreen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3756 >>> screen.bye() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3757 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3758 self._destroy() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3759 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3760 def exitonclick(self): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3761 """Go into mainloop until the mouse is clicked. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3762 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3763 No arguments. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3764 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3765 Bind bye() method to mouseclick on TurtleScreen. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3766 If "using_IDLE" - value in configuration dictionary is False |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3767 (default value), enter mainloop. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3768 If IDLE with -n switch (no subprocess) is used, this value should be |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3769 set to True in turtle.cfg. In this case IDLE's mainloop |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3770 is active also for the client script. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3771 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3772 This is a method of the Screen-class and not available for |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3773 TurtleScreen instances. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3774 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3775 Example (for a Screen instance named screen): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3776 >>> screen.exitonclick() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3777 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3778 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3779 def exitGracefully(x, y): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3780 """Screen.bye() with two dummy-parameters""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3781 self.bye() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3782 self.onclick(exitGracefully) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3783 if _CFG["using_IDLE"]: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3784 return |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3785 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3786 mainloop() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3787 except AttributeError: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3788 exit(0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3789 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3790 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3791 class Turtle(RawTurtle): |
|
68585
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68488
diff
changeset
|
3792 """RawTurtle auto-creating (scrolled) canvas. |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3793 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3794 When a Turtle object is created or a function derived from some |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3795 Turtle method is called a TurtleScreen object is automatically created. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3796 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3797 _pen = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3798 _screen = None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3799 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3800 def __init__(self, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3801 shape=_CFG["shape"], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3802 undobuffersize=_CFG["undobuffersize"], |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3803 visible=_CFG["visible"]): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3804 if Turtle._screen is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3805 Turtle._screen = Screen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3806 RawTurtle.__init__(self, Turtle._screen, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3807 shape=shape, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3808 undobuffersize=undobuffersize, |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3809 visible=visible) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3810 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3811 Pen = Turtle |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3812 |
| 9585 | 3813 def _getpen(): |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3814 """Create the 'anonymous' turtle if not already present.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3815 if Turtle._pen is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3816 Turtle._pen = Turtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3817 return Turtle._pen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3818 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3819 def _getscreen(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3820 """Create a TurtleScreen if not already present.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3821 if Turtle._screen is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3822 Turtle._screen = Screen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3823 return Turtle._screen |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3824 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3825 def write_docstringdict(filename="turtle_docstringdict"): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3826 """Create and write docstring-dictionary to file. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3827 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3828 Optional argument: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3829 filename -- a string, used as filename |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3830 default value is turtle_docstringdict |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3831 |
|
68585
bf94b6a73fc8
#11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68488
diff
changeset
|
3832 Has to be called explicitly, (not used by the turtle-graphics classes) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3833 The docstring dictionary will be written to the Python script <filname>.py |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3834 It is intended to serve as a template for translation of the docstrings |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3835 into different languages. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3836 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3837 docsdict = {} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3838 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3839 for methodname in _tg_screen_functions: |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3840 key = "_Screen."+methodname |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3841 docsdict[key] = eval(key).__doc__ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3842 for methodname in _tg_turtle_functions: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3843 key = "Turtle."+methodname |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3844 docsdict[key] = eval(key).__doc__ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3845 |
|
82168
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3846 with open("%s.py" % filename,"w") as f: |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3847 keys = sorted([x for x in docsdict.keys() |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3848 if x.split('.')[1] not in _alias_list]) |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3849 f.write('docsdict = {\n\n') |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3850 for key in keys[:-1]: |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3851 f.write('%s :\n' % repr(key)) |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3852 f.write(' """%s\n""",\n\n' % docsdict[key]) |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3853 key = keys[-1] |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3854 f.write('%s :\n' % repr(key)) |
|
82168
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3855 f.write(' """%s\n"""\n\n' % docsdict[key]) |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3856 f.write("}\n") |
|
cb876235f29d
modernize some modules' code by using with statement around open()
Giampaolo Rodola' <g.rodola@gmail.com>
parents:
73817
diff
changeset
|
3857 f.close() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3858 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3859 def read_docstrings(lang): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3860 """Read in docstrings from lang-specific docstring dictionary. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3861 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3862 Transfer docstrings, translated to lang, from a dictionary-file |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3863 to the methods of classes Screen and Turtle and - in revised form - |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3864 to the corresponding functions. |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
3865 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3866 modname = "turtle_docstringdict_%(language)s" % {'language':lang.lower()} |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3867 module = __import__(modname) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3868 docsdict = module.docsdict |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3869 for key in docsdict: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3870 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3871 # eval(key).im_func.__doc__ = docsdict[key] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3872 eval(key).__doc__ = docsdict[key] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3873 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3874 print("Bad docstring-entry: %s" % key) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3875 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3876 _LANGUAGE = _CFG["language"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3877 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3878 try: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3879 if _LANGUAGE != "english": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3880 read_docstrings(_LANGUAGE) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3881 except ImportError: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3882 print("Cannot find docsdict for", _LANGUAGE) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3883 except: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3884 print ("Unknown Error when trying to import %s-docstring-dictionary" % |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3885 _LANGUAGE) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3886 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3887 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3888 def getmethparlist(ob): |
|
65656
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3889 """Get strings describing the arguments for the given object |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3890 |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3891 Returns a pair of strings representing function parameter lists |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3892 including parenthesis. The first string is suitable for use in |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3893 function definition and the second is suitable for use in function |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3894 call. The "self" parameter is not included. |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3895 """ |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3896 defText = callText = "" |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3897 # bit of a hack for methods - turn it into a function |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3898 # but we drop the "self" param. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3899 # Try and build one for Python defined functions |
|
65656
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3900 args, varargs, varkw = inspect.getargs(ob.__code__) |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3901 items2 = args[1:] |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3902 realArgs = args[1:] |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3903 defaults = ob.__defaults__ or [] |
|
65656
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3904 defaults = ["=%r" % (value,) for value in defaults] |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3905 defaults = [""] * (len(realArgs)-len(defaults)) + defaults |
|
65656
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3906 items1 = [arg + dflt for arg, dflt in zip(realArgs, defaults)] |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3907 if varargs is not None: |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3908 items1.append("*" + varargs) |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3909 items2.append("*" + varargs) |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3910 if varkw is not None: |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3911 items1.append("**" + varkw) |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3912 items2.append("**" + varkw) |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3913 defText = ", ".join(items1) |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3914 defText = "(%s)" % defText |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3915 callText = ", ".join(items2) |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3916 callText = "(%s)" % callText |
|
4b542217e93e
Issue #10193: Simplified instrospection used by turtle module
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
64405
diff
changeset
|
3917 return defText, callText |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3918 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3919 def _turtle_docrevise(docstr): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3920 """To reduce docstrings from RawTurtle class for functions |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3921 """ |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3922 import re |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3923 if docstr is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3924 return None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3925 turtlename = _CFG["exampleturtle"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3926 newdocstr = docstr.replace("%s." % turtlename,"") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3927 parexp = re.compile(r' \(.+ %s\):' % turtlename) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3928 newdocstr = parexp.sub(":", newdocstr) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3929 return newdocstr |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3930 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3931 def _screen_docrevise(docstr): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3932 """To reduce docstrings from TurtleScreen class for functions |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
3933 """ |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3934 import re |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3935 if docstr is None: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3936 return None |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3937 screenname = _CFG["examplescreen"] |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3938 newdocstr = docstr.replace("%s." % screenname,"") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3939 parexp = re.compile(r' \(.+ %s\):' % screenname) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3940 newdocstr = parexp.sub(":", newdocstr) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3941 return newdocstr |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3942 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3943 ## The following mechanism makes all methods of RawTurtle and Turtle available |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3944 ## as functions. So we can enhance, change, add, delete methods to these |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3945 ## classes and do not need to change anything here. |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3946 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3947 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3948 for methodname in _tg_screen_functions: |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3949 pl1, pl2 = getmethparlist(eval('_Screen.' + methodname)) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3950 if pl1 == "": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3951 print(">>>>>>", pl1, pl2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3952 continue |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3953 defstr = ("def %(key)s%(pl1)s: return _getscreen().%(key)s%(pl2)s" % |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3954 {'key':methodname, 'pl1':pl1, 'pl2':pl2}) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3955 exec(defstr) |
|
49345
ab34a647e22f
Merged revisions 66686 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49249
diff
changeset
|
3956 eval(methodname).__doc__ = _screen_docrevise(eval('_Screen.'+methodname).__doc__) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3957 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3958 for methodname in _tg_turtle_functions: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3959 pl1, pl2 = getmethparlist(eval('Turtle.' + methodname)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3960 if pl1 == "": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3961 print(">>>>>>", pl1, pl2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3962 continue |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3963 defstr = ("def %(key)s%(pl1)s: return _getpen().%(key)s%(pl2)s" % |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3964 {'key':methodname, 'pl1':pl1, 'pl2':pl2}) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3965 exec(defstr) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3966 eval(methodname).__doc__ = _turtle_docrevise(eval('Turtle.'+methodname).__doc__) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3967 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3968 |
|
53772
5dfd22906341
#5923: update turtle module to version 1.1.
Georg Brandl <georg@python.org>
parents:
51776
diff
changeset
|
3969 done = mainloop |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3970 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3971 if __name__ == "__main__": |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3972 def switchpen(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3973 if isdown(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3974 pu() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3975 else: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3976 pd() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3977 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3978 def demo1(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3979 """Demo of old turtle.py - module""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3980 reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3981 tracer(True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3982 up() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3983 backward(100) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3984 down() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3985 # draw 3 squares; the last filled |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3986 width(3) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3987 for i in range(3): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3988 if i == 2: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3989 begin_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3990 for _ in range(4): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3991 forward(20) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3992 left(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3993 if i == 2: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3994 color("maroon") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3995 end_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3996 up() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3997 forward(30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3998 down() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
3999 width(1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4000 color("black") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4001 # move out of the way |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4002 tracer(False) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4003 up() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4004 right(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4005 forward(100) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4006 right(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4007 forward(100) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4008 right(180) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4009 down() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4010 # some text |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4011 write("startstart", 1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4012 write("start", 1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4013 color("red") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4014 # staircase |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4015 for i in range(5): |
| 9585 | 4016 forward(20) |
| 4017 left(90) | |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4018 forward(20) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4019 right(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4020 # filled staircase |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4021 tracer(True) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4022 begin_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4023 for i in range(5): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4024 forward(20) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4025 left(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4026 forward(20) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4027 right(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4028 end_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4029 # more text |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4030 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4031 def demo2(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4032 """Demo of some new features.""" |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4033 speed(1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4034 st() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4035 pensize(3) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4036 setheading(towards(0, 0)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4037 radius = distance(0, 0)/2.0 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4038 rt(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4039 for _ in range(18): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4040 switchpen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4041 circle(radius, 10) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4042 write("wait a moment...") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4043 while undobufferentries(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4044 undo() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4045 reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4046 lt(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4047 colormode(255) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4048 laenge = 10 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4049 pencolor("green") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4050 pensize(3) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4051 lt(180) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4052 for i in range(-2, 16): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4053 if i > 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4054 begin_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4055 fillcolor(255-15*i, 0, 15*i) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4056 for _ in range(3): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4057 fd(laenge) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4058 lt(120) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4059 end_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4060 laenge += 10 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4061 lt(15) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4062 speed((speed()+1)%12) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4063 #end_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4064 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4065 lt(120) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4066 pu() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4067 fd(70) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4068 rt(30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4069 pd() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4070 color("red","yellow") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4071 speed(0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4072 begin_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4073 for _ in range(4): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4074 circle(50, 90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4075 rt(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4076 fd(30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4077 rt(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4078 end_fill() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4079 lt(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4080 pu() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4081 fd(30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4082 pd() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4083 shape("turtle") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4084 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4085 tri = getturtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4086 tri.resizemode("auto") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4087 turtle = Turtle() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4088 turtle.resizemode("auto") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4089 turtle.shape("turtle") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4090 turtle.reset() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4091 turtle.left(90) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4092 turtle.speed(0) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4093 turtle.up() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4094 turtle.goto(280, 40) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4095 turtle.lt(30) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4096 turtle.down() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4097 turtle.speed(6) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4098 turtle.color("blue","orange") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4099 turtle.pensize(2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4100 tri.speed(6) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
4101 setheading(towards(turtle)) |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4102 count = 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4103 while tri.distance(turtle) > 4: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4104 turtle.fd(3.5) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4105 turtle.lt(0.6) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4106 tri.setheading(tri.towards(turtle)) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4107 tri.fd(4) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4108 if count % 20 == 0: |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4109 turtle.stamp() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4110 tri.stamp() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4111 switchpen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4112 count += 1 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4113 tri.write("CAUGHT! ", font=("Arial", 16, "bold"), align="right") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4114 tri.pencolor("black") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4115 tri.pencolor("red") |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4116 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4117 def baba(xdummy, ydummy): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4118 clearscreen() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4119 bye() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4120 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4121 time.sleep(2) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4122 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4123 while undobufferentries(): |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4124 tri.undo() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4125 turtle.undo() |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4126 tri.fd(50) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4127 tri.write(" Click me!", font = ("Courier", 12, "bold") ) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4128 tri.onclick(baba, 1) |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4129 |
|
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4130 demo1() |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
31515
diff
changeset
|
4131 demo2() |
|
47538
c1aeb6c94af1
Patch #3064: Port new turtle module and demos to 3.0.
Martin v. Löwis <martin@v.loewis.de>
parents:
47130
diff
changeset
|
4132 exitonclick() |
