tkinter多线程粒子_布朗移动

tkinter brownian motion 多线程粒子布朗运动

tkinter brownian motion 多线程粒子布朗运动

"""
   tkinter多线程粒子_布朗移动
"""

from tkinter import *
import random
import threading
import time
import sys

WIDTH = 400
HEIGHT = 300
SIGMA = 10
BUZZ = 2
RADIUS = 1
LAMBDA = 10
FILL = 'blue'

stop = 0                                # 停止标志

def particle(canvas):
    r = RADIUS
    x = random.gauss(WIDTH/2.0, SIGMA)
    y = random.gauss(HEIGHT/2.0, SIGMA)
    p = canvas.create_oval(x-r, y-r, x+r, y+r, fill=FILL)
    while not stop:
        dx = random.gauss(0, BUZZ)
        dy = random.gauss(0, BUZZ)
        dt = random.expovariate(LAMBDA)
        try:
            canvas.move(p, dx, dy)
        except TclError:
            break
        time.sleep(dt)
        

def main():
    global stop
    root = Tk()
    root.title('tkinter多线程粒子_布朗移动_brownian motion')
    canvas = Canvas(root, width=WIDTH, height=HEIGHT,bg='cyan')
    canvas.pack(fill='both', expand=1)
    np = 500
    if sys.argv[1:]:
        np = int(sys.argv[1])
    for i in range(np):
        t = threading.Thread(target=particle, args=(canvas,))
        t.start()
    try:
        root.mainloop()
    finally:
        stop = 1

main()

关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在python, tkinter分类目录。将固定链接加入收藏夹。