我需要使用一个函数中创建的变量作为另一个函数中的参数/参数。我不确定如何在没有连续的错误信号的情况下这样做,因为我每10毫秒重复一次该功能。这里是代码:Python如何在另一个函数中使用局部变量作为参数
def addFish():
x = createRandomX()
y = createRandomY()
Dx = createRandomDx()
Dy = createRandomDy()
fish = canvas.create_image(x, y, image = fishRight)
updateFish(x, y, Dx, Dy, fish)
return x, y, Dx, Dy, fish
fishButton = Button(root, text = "Add a fish", command = addFish)
fishButton.grid(row = 1, column = 0)
def updateFish(x, y, Dx, Dy, fish):
#global x, y, Dx, Dy, fish
canvas.coords(fish, x , y)
x = x + Dx
y = y + Dy
if x < 0 or x > 500:
Dx = Dx * -1
if y < 0 or y > 500:
Dy = Dy * -1
if Dx == 1:
canvas.itemconfig(fish, image=fishRight)
if Dx == -1:
canvas.itemconfig(fish, image=fishLeft)
canvas.after(10, updateFish(x, y, Dx, Dy, fish))
updateFish(x, y, Dx, Dy, fish)
root.mainloop()
所以,当我这样做时,我得到的错误,没有定义x。这是因为当我调用updateFish时,第一个参数x不是全局变量,它只是addFish()的局部变量。所以,我需要知道如何能够使用addFish()中的变量作为函数updateFish中的参数。
我正在建造一个鱼类,让鱼不断反弹,但我需要updateFish函数来为我添加的所有鱼类工作 - 因此它需要是函数中的一个参数。
当你调用'updateFish'时,你期望'x'的值是什么? – BrenBarn
我希望它与我在创建一条鱼时创建的随机x相同。我想在随机位置创建一条鱼,然后将该位置发送给更新鱼,以便它可以移动。在updateFish开始时我只需要一次这个位置,因为一旦它进入更新鱼,x和y值将会随着时间的推移而开始改变,这样鱼就会四处移动。 – user3329772
在您第一次调用'updateFish'时,您从未称过'addFish',因此没有创建鱼。 – BrenBarn