Skip to content

Commit

Permalink
[3.12] [3.13] pythongh-123370: Fix the canvas not clearing after runn…
Browse files Browse the repository at this point in the history
…ing turtledemo.clock (pythongh-123457) (pythonGH-125653) (python#125656)

Rewriting the day and date every tick somehow prevented them from being removed either by clicking STOP or loading another example.  The solution is to rewrite them only when they change.
(cherry picked from commit c124577)

(cherry picked from commit 30d7e9e)

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Co-authored-by: Wulian <xiguawulian@gmail.com>
  • Loading branch information
3 people authored Oct 17, 2024
1 parent dc0a176 commit 5e62d9b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
33 changes: 20 additions & 13 deletions Lib/turtledemo/clock.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#!/usr/bin/env python3
# -*- coding: cp1252 -*-
""" turtle-example-suite:
tdemo_clock.py
turtledemo/clock.py
Enhanced clock-program, showing date
and time
Expand All @@ -13,6 +12,9 @@
from turtle import *
from datetime import datetime

dtfont = "TkFixedFont", 14, "bold"
current_day = None

def jump(distanz, winkel=0):
penup()
right(winkel)
Expand Down Expand Up @@ -53,11 +55,23 @@ def clockface(radius):
jump(-radius)
rt(6)

def display_date_time():
global current_day
writer.clear()
now = datetime.now()
current_day = now.day
writer.home()
writer.forward(distance=65)
writer.write(wochentag(now), align="center", font=dtfont)
writer.back(distance=150)
writer.write(datum(now), align="center", font=dtfont)
writer.forward(distance=85)

def setup():
global second_hand, minute_hand, hour_hand, writer
mode("logo")
make_hand_shape("second_hand", 125, 25)
make_hand_shape("minute_hand", 130, 25)
make_hand_shape("minute_hand", 115, 25)
make_hand_shape("hour_hand", 90, 25)
clockface(160)
second_hand = Turtle()
Expand All @@ -75,10 +89,10 @@ def setup():
hand.speed(0)
ht()
writer = Turtle()
#writer.mode("logo")
writer.ht()
writer.pu()
writer.bk(85)
display_date_time()

def wochentag(t):
wochentag = ["Monday", "Tuesday", "Wednesday",
Expand All @@ -100,18 +114,11 @@ def tick():
stunde = t.hour + minute/60.0
try:
tracer(False) # Terminator can occur here
writer.clear()
writer.home()
writer.forward(65)
writer.write(wochentag(t),
align="center", font=("Courier", 14, "bold"))
writer.back(150)
writer.write(datum(t),
align="center", font=("Courier", 14, "bold"))
writer.forward(85)
second_hand.setheading(6*sekunde) # or here
minute_hand.setheading(6*minute)
hour_hand.setheading(30*stunde)
if t.day != current_day:
display_date_time()
tracer(True)
ontimer(tick, 100)
except Terminator:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix the canvas not clearing after running turtledemo clock.

0 comments on commit 5e62d9b

Please sign in to comment.