Python tkinter不需要的函数覆盖

Python tkinter不需要的函数覆盖,python,function,animation,canvas,tkinter,Python,Function,Animation,Canvas,Tkinter,因此,基本上我有一个动画为1个对象的函数,我希望能够有更多的独立对象,但是当我再次调用该函数时,它只会覆盖旧函数,我希望能够有多个对象(我想要雨) 随机导入 进口tkinter canvas=tkinter.canvas(宽度=1000,高度=600,bg=“白色”) canvas.pack() x=0 y=0 def idk(): idk2() 画布。之后(2000年,idk2) def idk2(): 全球x x=random.randint(01000) idk3() def idk3()

因此,基本上我有一个动画为1个对象的函数,我希望能够有更多的独立对象,但是当我再次调用该函数时,它只会覆盖旧函数,我希望能够有多个对象(我想要雨)

随机导入
进口tkinter
canvas=tkinter.canvas(宽度=1000,高度=600,bg=“白色”)
canvas.pack()
x=0
y=0
def idk():
idk2()
画布。之后(2000年,idk2)
def idk2():
全球x
x=random.randint(01000)
idk3()
def idk3():
全局y
y=y+10
canvas.delete('idk3')
画布。创建_矩形(x-2,y-10,x+2,y+10,tag=“idk3”)

如果y只需从代码中删除这一行:

canvas.delete('idk3')

当然,再次调用idk()函数只需从代码中删除这一行:

canvas.delete('idk3')

当然,再次调用idk()函数

如果需要大量降雨,则需要在雨滴到达地面之前保存它们

以下是一个例子:

raindrops = {}

def raining():
    # update existing rain drops
    for rd in list(raindrops):
        if raindrops[rd] < 600:
            # keep rain falling
            raindrops[rd] += 10
            canvas.move(rd, 0, 10)
        else:
            # rain drop reaches the ground, remove it
            canvas.delete(rd)
            del raindrops[rd]
    # create new rain drop at random x
    x = random.randint(0, 1000)
    rd = canvas.create_line(x, 0, x, 20)
    raindrops[rd] = 0  # save the y of rain drop
    canvas.after(20, raining)
raindrops={}
def raining():
#更新现有雨滴
对于列表中的rd(雨滴):
如果雨滴[rd]<600:
#不停地下雨
雨滴[rd]+=10
画布移动(rd,0,10)
其他:
#雨滴落到地上,把它移走
canvas.delete(rd)
德尔雨滴[rd]
#随机创建新的雨滴x
x=random.randint(0,1000)
rd=画布。创建线(x,0,x,20)
雨滴[rd]=0#保存雨滴的y
帆布。之后(20,下雨)

如果你想要大量的雨水,你需要在雨滴落到地面之前把它们存起来

以下是一个例子:

raindrops = {}

def raining():
    # update existing rain drops
    for rd in list(raindrops):
        if raindrops[rd] < 600:
            # keep rain falling
            raindrops[rd] += 10
            canvas.move(rd, 0, 10)
        else:
            # rain drop reaches the ground, remove it
            canvas.delete(rd)
            del raindrops[rd]
    # create new rain drop at random x
    x = random.randint(0, 1000)
    rd = canvas.create_line(x, 0, x, 20)
    raindrops[rd] = 0  # save the y of rain drop
    canvas.after(20, raining)
raindrops={}
def raining():
#更新现有雨滴
对于列表中的rd(雨滴):
如果雨滴[rd]<600:
#不停地下雨
雨滴[rd]+=10
画布移动(rd,0,10)
其他:
#雨滴落到地上,把它移走
canvas.delete(rd)
德尔雨滴[rd]
#随机创建新的雨滴x
x=random.randint(0,1000)
rd=画布。创建线(x,0,x,20)
雨滴[rd]=0#保存雨滴的y
帆布。之后(20,下雨)

“拥有多个对象”:为什么要删除到旧对象?参考这个例子:对不起,我正在寻找一个简单的解决方案“有多个对象”:为什么你要删除到旧的一个呢?参考这个例子:对不起,我在寻找一个简单的解决方案。我的意思是我想制造一场“雨”,所以这对我一点帮助都没有,如果没有这个删除,这只是一个更大的梅西不明白。你想同时制作两个下降元素吗?是的,没错,我想有很多下降元素,我只是不想有很多行代码,所以我想知道如何使用一个共享函数独立绘制更多下降元素。这并不像你想象的那么容易。这里有一个关于python中的降雪的教程:谢谢,但它是通过pygame而不是tkinter编写的,我稍后会在我的动画中添加一些条件,当我可以获得更多元素时,但我看到他的方法与我的完全不同,所以我不会尝试在tkinter中重写他的pygame方法(因为我想继续使用tkinter),那只会导致更多的麻烦。不,我是说我想制造一场“雨”,所以这对我一点帮助都没有,没有这个删除,这只是一个更大的梅西不明白。你想同时制作两个下降元素吗?是的,没错,我想有很多下降元素,我只是不想有很多行代码,所以我想知道如何使用一个共享函数独立绘制更多下降元素。这并不像你想象的那么容易。这里有一个关于python中的降雪的教程:谢谢,但它是通过pygame而不是tkinter编写的,我稍后会在我的动画中添加一些条件,当我可以获得更多元素时,但我看到他的方法与我的完全不同,所以我不会尝试在tkinter中重写他的pygame方法(因为我想继续使用tkinter),这只会导致更多的复杂性我会在这里和那里改变一些事情,但感谢主要功能!我将在这里和那里更改一些内容,但感谢主要功能!