https://github.com/python/cpython/commit/c124577ebe915a00de4033c0f7fa7c47621d79e0
commit: c124577ebe915a00de4033c0f7fa7c47621d79e0
branch: main
author: Wulian <[email protected]>
committer: terryjreedy <[email protected]>
date: 2024-10-17T11:23:37-04:00
summary:
gh-123370: Fix the canvas not clearing after running turtledemo.clock (#123457)
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.
files:
A Misc/NEWS.d/next/Library/2024-08-28-19-27-35.gh-issue-123370.SPZ9Ux.rst
M Lib/turtledemo/clock.py
diff --git a/Lib/turtledemo/clock.py b/Lib/turtledemo/clock.py
index fd3b3992d466bf..8a630e29b8da50 100644
--- a/Lib/turtledemo/clock.py
+++ b/Lib/turtledemo/clock.py
@@ -1,7 +1,6 @@
-# -*- coding: cp1252 -*-
""" turtle-example-suite:
- tdemo_clock.py
+ turtledemo/clock.py
Enhanced clock-program, showing date
and time
@@ -12,6 +11,9 @@
from turtle import *
from datetime import datetime
+dtfont = "TkFixedFont", 14, "bold"
+current_day = None
+
def jump(distanz, winkel=0):
penup()
right(winkel)
@@ -52,11 +54,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()
@@ -74,10 +88,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",
@@ -99,18 +113,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:
diff --git
a/Misc/NEWS.d/next/Library/2024-08-28-19-27-35.gh-issue-123370.SPZ9Ux.rst
b/Misc/NEWS.d/next/Library/2024-08-28-19-27-35.gh-issue-123370.SPZ9Ux.rst
new file mode 100644
index 00000000000000..1fd5cc54eaf3e7
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-08-28-19-27-35.gh-issue-123370.SPZ9Ux.rst
@@ -0,0 +1 @@
+Fix the canvas not clearing after running turtledemo clock.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]