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()

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » tkinter多线程粒子_布朗移动
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页