Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f7f746a8
Commit
f7f746a8
authored
Jun 30, 2014
by
Terry Jan Reedy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #21882: In turtle demos, remove module scope gui and sys calls by
moving them to the module's main function.
parent
04a37be9
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
73 additions
and
71 deletions
+73
-71
Demo/turtle/demohelp.txt
Demo/turtle/demohelp.txt
+3
-0
Demo/turtle/tdemo_clock.py
Demo/turtle/tdemo_clock.py
+2
-6
Demo/turtle/tdemo_minimal_hanoi.py
Demo/turtle/tdemo_minimal_hanoi.py
+0
-1
Demo/turtle/tdemo_nim.py
Demo/turtle/tdemo_nim.py
+13
-14
Demo/turtle/tdemo_two_canvases.py
Demo/turtle/tdemo_two_canvases.py
+54
-0
Demo/turtle/turtledemo_two_canvases.py
Demo/turtle/turtledemo_two_canvases.py
+0
-49
Lib/lib-tk/turtle.py
Lib/lib-tk/turtle.py
+1
-1
No files found.
Demo/turtle/demohelp.txt
View file @
f7f746a8
...
...
@@ -52,6 +52,9 @@
(2) How to add your own demos to the demo repository
IMPORTANT! When imported, the demo should not modify the system
by calling functions in other modules, such as sys, tkinter, or
turtle. Global variables should be initialized in main().
- The script name must begin with tdemo_ ,
so it must have the form tdemo_<your-script-name>.py
...
...
Demo/turtle/tdemo_clock.py
View file @
f7f746a8
...
...
@@ -11,11 +11,8 @@ and time
------------------------------------
"""
from
turtle
import
*
from
turtle
import
Terminator
# not in __all__
from
datetime
import
datetime
mode
(
"logo"
)
def
jump
(
distanz
,
winkel
=
0
):
penup
()
right
(
winkel
)
...
...
@@ -43,7 +40,6 @@ def make_hand_shape(name, laenge, spitze):
hand_form
=
get_poly
()
register_shape
(
name
,
hand_form
)
def
clockface
(
radius
):
reset
()
pensize
(
7
)
...
...
@@ -84,7 +80,6 @@ def setup():
writer
.
pu
()
writer
.
bk
(
85
)
def
wochentag
(
t
):
wochentag
=
[
"Monday"
,
"Tuesday"
,
"Wednesday"
,
"Thursday"
,
"Friday"
,
"Saturday"
,
"Sunday"
]
...
...
@@ -131,6 +126,7 @@ def main():
return
"EVENTLOOP"
if
__name__
==
"__main__"
:
mode
(
"logo"
)
msg
=
main
()
print
msg
mainloop
()
mainloop
()
# keep window open
Demo/turtle/tdemo_minimal_hanoi.py
View file @
f7f746a8
...
...
@@ -18,7 +18,6 @@ stretched to rectangles by shapesize()
---------------------------------------
"""
from
turtle
import
*
from
turtle
import
Terminator
# not in __all__
class
Disc
(
Turtle
):
def
__init__
(
self
,
n
):
...
...
Demo/turtle/tdemo_nim.py
View file @
f7f746a8
""" turtle-example-suite:
tdemo_nim.py
Play nim against the computer. The player
who takes the last stick is the winner.
...
...
@@ -41,7 +41,7 @@ def computerzug(state):
return
move
def
randommove
(
state
):
m
=
max
(
state
)
m
=
max
(
state
)
while
True
:
z
=
random
.
randint
(
0
,
2
)
if
state
[
z
]
>
(
m
>
1
):
...
...
@@ -62,7 +62,7 @@ class NimModel(object):
self
.
winner
=
None
self
.
game
.
view
.
setup
()
self
.
game
.
state
=
Nim
.
RUNNING
def
move
(
self
,
row
,
col
):
maxspalte
=
self
.
sticks
[
row
]
self
.
sticks
[
row
]
=
col
...
...
@@ -76,7 +76,7 @@ class NimModel(object):
row
,
col
=
computerzug
(
self
.
sticks
)
self
.
move
(
row
,
col
)
self
.
player
=
0
def
game_over
(
self
):
return
self
.
sticks
==
[
0
,
0
,
0
]
...
...
@@ -100,13 +100,13 @@ class Stick(turtle.Turtle):
self
.
goto
(
x
,
y
)
self
.
color
(
"white"
)
self
.
showturtle
()
def
coords
(
self
,
row
,
col
):
packet
,
remainder
=
divmod
(
col
,
5
)
x
=
(
3
+
11
*
packet
+
2
*
remainder
)
*
WUNIT
y
=
(
2
+
3
*
row
)
*
HUNIT
return
x
-
SCREENWIDTH
//
2
+
WUNIT
//
2
,
SCREENHEIGHT
//
2
-
y
-
HUNIT
//
2
def
makemove
(
self
,
x
,
y
):
if
self
.
game
.
state
!=
Nim
.
RUNNING
:
return
...
...
@@ -142,7 +142,7 @@ class NimView(object):
self
.
writer
.
pencolor
(
"black"
)
self
.
writer
.
write
(
msg1
,
align
=
"center"
,
font
=
(
"Courier"
,
14
,
"bold"
))
self
.
screen
.
tracer
(
True
)
def
setup
(
self
):
self
.
screen
.
tracer
(
False
)
...
...
@@ -181,6 +181,7 @@ class NimView(object):
if
self
.
game
.
state
==
Nim
.
OVER
:
self
.
screen
.
clear
()
class
NimController
(
object
):
def
__init__
(
self
,
game
):
...
...
@@ -200,28 +201,26 @@ class NimController(object):
self
.
BUSY
=
True
self
.
game
.
model
.
notify_move
(
row
,
col
)
self
.
BUSY
=
False
class
Nim
(
object
):
CREATED
=
0
RUNNING
=
1
OVER
=
2
def
__init__
(
self
,
screen
):
self
.
state
=
Nim
.
CREATED
self
.
state
=
Nim
.
CREATED
self
.
screen
=
screen
self
.
model
=
NimModel
(
self
)
self
.
view
=
NimView
(
self
)
self
.
controller
=
NimController
(
self
)
mainscreen
=
turtle
.
Screen
()
mainscreen
.
mode
(
"standard"
)
mainscreen
.
setup
(
SCREENWIDTH
,
SCREENHEIGHT
)
def
main
():
mainscreen
=
turtle
.
Screen
()
mainscreen
.
mode
(
"standard"
)
mainscreen
.
setup
(
SCREENWIDTH
,
SCREENHEIGHT
)
nim
=
Nim
(
mainscreen
)
return
"EVENTLOOP!"
if
__name__
==
"__main__"
:
main
()
turtle
.
mainloop
()
Demo/turtle/tdemo_two_canvases.py
0 → 100644
View file @
f7f746a8
"""turtledemo.two_canvases
Use TurtleScreen and RawTurtle to draw on two
distinct canvases in a separate windows. The
new window must be separately closed in
addition to pressing the STOP button.
"""
from
turtle
import
TurtleScreen
,
RawTurtle
,
TK
def
main
():
root
=
TK
.
Tk
()
cv1
=
TK
.
Canvas
(
root
,
width
=
300
,
height
=
200
,
bg
=
"#ddffff"
)
cv2
=
TK
.
Canvas
(
root
,
width
=
300
,
height
=
200
,
bg
=
"#ffeeee"
)
cv1
.
pack
()
cv2
.
pack
()
s1
=
TurtleScreen
(
cv1
)
s1
.
bgcolor
(
0.85
,
0.85
,
1
)
s2
=
TurtleScreen
(
cv2
)
s2
.
bgcolor
(
1
,
0.85
,
0.85
)
p
=
RawTurtle
(
s1
)
q
=
RawTurtle
(
s2
)
p
.
color
(
"red"
,
(
1
,
0.85
,
0.85
))
p
.
width
(
3
)
q
.
color
(
"blue"
,
(
0.85
,
0.85
,
1
))
q
.
width
(
3
)
for
t
in
p
,
q
:
t
.
shape
(
"turtle"
)
t
.
lt
(
36
)
q
.
lt
(
180
)
for
t
in
p
,
q
:
t
.
begin_fill
()
for
i
in
range
(
5
):
for
t
in
p
,
q
:
t
.
fd
(
50
)
t
.
lt
(
72
)
for
t
in
p
,
q
:
t
.
end_fill
()
t
.
lt
(
54
)
t
.
pu
()
t
.
bk
(
50
)
return
"EVENTLOOP"
if
__name__
==
'__main__'
:
main
()
TK
.
mainloop
()
# keep window open until user closes it
Demo/turtle/turtledemo_two_canvases.py
deleted
100755 → 0
View file @
04a37be9
#!/usr/bin/env python
## DEMONSTRATES USE OF 2 CANVASES, SO CANNOT BE RUN IN DEMOVIEWER!
"""turtle example: Using TurtleScreen and RawTurtle
for drawing on two distinct canvases.
"""
from
turtle
import
TurtleScreen
,
RawTurtle
,
TK
root
=
TK
.
Tk
()
cv1
=
TK
.
Canvas
(
root
,
width
=
300
,
height
=
200
,
bg
=
"#ddffff"
)
cv2
=
TK
.
Canvas
(
root
,
width
=
300
,
height
=
200
,
bg
=
"#ffeeee"
)
cv1
.
pack
()
cv2
.
pack
()
s1
=
TurtleScreen
(
cv1
)
s1
.
bgcolor
(
0.85
,
0.85
,
1
)
s2
=
TurtleScreen
(
cv2
)
s2
.
bgcolor
(
1
,
0.85
,
0.85
)
p
=
RawTurtle
(
s1
)
q
=
RawTurtle
(
s2
)
p
.
color
(
"red"
,
"white"
)
p
.
width
(
3
)
q
.
color
(
"blue"
,
"black"
)
q
.
width
(
3
)
for
t
in
p
,
q
:
t
.
shape
(
"turtle"
)
t
.
lt
(
36
)
q
.
lt
(
180
)
for
i
in
range
(
5
):
for
t
in
p
,
q
:
t
.
fd
(
50
)
t
.
lt
(
72
)
for
t
in
p
,
q
:
t
.
lt
(
54
)
t
.
pu
()
t
.
bk
(
50
)
## Want to get some info?
print
s1
,
s2
print
p
,
q
print
s1
.
turtles
()
print
s2
.
turtles
()
TK
.
mainloop
()
Lib/lib-tk/turtle.py
View file @
f7f746a8
...
...
@@ -142,7 +142,7 @@ _math_functions = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh',
'log10'
,
'modf'
,
'pi'
,
'pow'
,
'sin'
,
'sinh'
,
'sqrt'
,
'tan'
,
'tanh'
]
__all__
=
(
_tg_classes
+
_tg_screen_functions
+
_tg_turtle_functions
+
_tg_utilities
+
_math_functions
)
_tg_utilities
+
[
'Terminator'
]
+
_math_functions
)
_alias_list
=
[
'addshape'
,
'backward'
,
'bk'
,
'fd'
,
'ht'
,
'lt'
,
'pd'
,
'pos'
,
'pu'
,
'rt'
,
'seth'
,
'setpos'
,
'setposition'
,
'st'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment