here2share

# tk_spiral_xmas_tree.py

Dec 26th, 2025
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.24 KB | None | 0 0
  1. # tk_spiral_xmas_tree.py
  2.  
  3. import tkinter as tk
  4. import random
  5. import math
  6.  
  7. sz = 600
  8.  
  9. root = tk.Tk()
  10. root.geometry(f'{sz}x{sz}+0+0')
  11. canvas = tk.Canvas(root, width=sz, height=sz, bg='black')
  12. canvas.pack()
  13.  
  14. x0, y0 = sz/2, 80
  15. points = []
  16. for i in range(int(sz*0.78)):
  17.     t = i / 5
  18.     x = x0 + t * math.cos(t) * 2.5
  19.     y = y0 - t * (math.sin(t) * 0.25 - 5)
  20.     points.append((x, y))
  21.  
  22. for i in range(1, len(points)):
  23.     canvas.create_line(points[i-1][0], points[i-1][1], points[i][0], points[i][1], fill='#00ff37', width=1)
  24.  
  25. y0 = 50
  26. star_points = []
  27. for i in range(5):
  28.     angle = math.pi/2 + i * 4*math.pi/5
  29.     outer_x = x0 + 40 * math.cos(angle)
  30.     outer_y = y0 - 40 * math.sin(angle)
  31.     inner_angle = angle + 2*math.pi/10
  32.     inner_x = x0 + 16 * math.cos(inner_angle)
  33.     inner_y = y0 - 16 * math.sin(inner_angle)
  34.     star_points.extend([outer_x, outer_y, inner_x, inner_y])
  35. canvas.create_polygon(star_points, fill='yellow', outline='yellow')
  36.  
  37. r = 7
  38. def on_click(event):
  39.     x, y = event.x, event.y
  40.     color = f'#{random.randint(0,255):02x}{random.randint(0,255):02x}{random.randint(0,255):02x}'
  41.     canvas.create_oval(x-r, y-r, x+r, y+r, fill=color, outline=color)
  42.  
  43. canvas.bind('<Button-1>', on_click)
  44. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment