Advertisement
Guest User

Untitled

a guest
Jan 17th, 2020
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.32 KB | None | 0 0
  1. from tkinter import Canvas, Button, Tk
  2. from random import randint
  3. import threading
  4. import time
  5.  
  6. root = Tk()
  7. root.geometry('1000x750')
  8. root.resizable(0, 0)
  9. root.config(bg='#ccc')
  10. canvas = Canvas(width=1000, height=700)
  11. canvas.pack()
  12.  
  13. balls = []
  14. for i in range(20):
  15.     x, y = randint(50, 950), randint(50, 650)
  16.     h = x + 25
  17.     z = y + 25
  18.     balls.append(canvas.create_oval(x, y, h, z, width=5, fill='green'))
  19.  
  20. flag = False
  21.  
  22.  
  23. def func(ball, dx, dy):
  24.     global flag
  25.     dx, dy = dx, dy
  26.     while True:
  27.         if flag:
  28.             break
  29.         time.sleep(.01)
  30.         canvas.move(ball, dx, dy)
  31.         canvas.update()
  32.  
  33.         if canvas.coords(ball)[0] > 975:
  34.             dx = -dx
  35.         elif canvas.coords(ball)[2] < 25:
  36.             dx = -dx
  37.  
  38.         if canvas.coords(ball)[1] > 675:
  39.             dy = -dy
  40.         elif canvas.coords(ball)[3] < 25:
  41.             dy = -dy
  42.  
  43.  
  44. def start():
  45.     global flag
  46.     flag = False
  47.     for ball in balls:
  48.         t1 = threading.Thread(target=func, args=[ball, randint(-10, 10), randint(-10, 10)])
  49.         t1.start()
  50.  
  51. def stop():
  52.     global flag
  53.     flag = True
  54.  
  55.  
  56. button1 = Button(root, text='Start', command=start)
  57. button1.pack(side='left', padx='5')
  58.  
  59. button2 = Button(root, text='Stop', command=stop)
  60. button2.pack(side='left', padx='5')
  61.  
  62.  
  63. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement