mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
528bbab96f
commit
c124577ebe
|
@ -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 @@ and time
|
|||
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:
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix the canvas not clearing after running turtledemo clock.
|
Loading…
Reference in New Issue