Hasli4

Timer Turtle

Jul 21st, 2025
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.82 KB | None | 0 0
  1. import turtle
  2. import time
  3.  
  4. screen = turtle.Screen()
  5. screen.title("Секундомер")
  6.  
  7. elapsed = 0.0
  8. running = False
  9. last_update = 0.0
  10.  
  11. display = turtle.Turtle()
  12. display.hideturtle()
  13. display.penup()
  14. display.goto(0, 50)
  15.  
  16. def format_time(t):
  17.     h = int(t // 3600)
  18.     m = int((t % 3600) // 60)
  19.     s = int(t % 60)
  20.     return f"{h:02d}:{m:02d}:{s:02d}"
  21.  
  22. def update_clock():
  23.     global elapsed, last_update
  24.     if running:
  25.         now = time.time()
  26.         elapsed += now - last_update
  27.         last_update = now
  28.         display.clear()
  29.         display.write(format_time(elapsed), align="center", font=("Arial", 24, "normal"))
  30.     screen.ontimer(update_clock, 100)
  31.  
  32. def start(x=None, y=None):
  33.     global running, last_update
  34.     if not running:
  35.         running = True
  36.         last_update = time.time()
  37.         update_clock()
  38.  
  39. def pause(x=None, y=None):
  40.     global running, elapsed
  41.     if running:
  42.         running = False
  43.         display.clear()
  44.         display.write(format_time(elapsed), align="center", font=("Arial", 24, "normal"))
  45.  
  46. def stop(x=None, y=None):
  47.     global running, elapsed
  48.     running = False
  49.     elapsed = 0.0
  50.     display.clear()
  51.     display.write(format_time(elapsed), align="center", font=("Arial", 24, "normal"))
  52.  
  53. def make_button(label, pos, callback):
  54.     btn = turtle.Turtle()
  55.     btn.hideturtle()
  56.     btn.penup()
  57.     btn.shape("square")
  58.     btn.shapesize(stretch_wid=1, stretch_len=4)
  59.     btn.fillcolor("lightgray")
  60.     btn.goto(pos)
  61.     btn.showturtle()
  62.     btn.write(label, align="center", font=("Arial", 12, "normal"))
  63.     btn.onclick(callback)
  64.     return btn
  65.  
  66. make_button("START", (-100, -50), start)
  67. make_button("PAUSE", (0, -50), pause)
  68. make_button("STOP", (100, -50), stop)
  69.  
  70. display.write("00:00:00", align="center", font=("Arial", 24, "normal"))
  71.  
  72. screen.mainloop()
  73.  
Advertisement
Add Comment
Please, Sign In to add comment