如何在该方法中传递参数?

时间:2014-09-05 02:12:48

标签: python turtle-graphics

我正在使用图书馆龟。 它具有onkey命令,如下所示:

turtle.onkeypress(fun, key=None)
Parameters:
fun – a function with no arguments or None
key – a string: key (e.g. “a”) or key-symbol (e.g. “space”)

但是,我需要传递一个论点。有没有办法做到这一点?

我的代码:

menuInitial.py

class MenuInitial(menu.Menu):
        [...]
    def itemInput(self):
        turtle.Screen().onkey(menu.Menu.itemUp(self), "Up")
        turtle.Screen().listen()

menu.py

class Menu(drawingGeometric.rectangle):
    [...]
    def itemUp(self):
        self.turtle.left(90)
        position.position.forwardWithoutPen(self, 16)
        self.turtle.right(90)

可以看出,“MenuInitial”类是“菜单”的继承人。我正在学习面向对象。

1 个答案:

答案 0 :(得分:1)

看起来你应该这样做:

class MenuInitial(menu.Menu):
        [...]
    def itemInput(self):
        turtle.Screen().onkey(self.itemUp, "Up")
        turtle.Screen().listen()

因为您将itemUp作为绑定实例方法(self.itemUp)传递给onkey而不是作为未绑定方法(menu.Menu.itemUp),{{1将自动作为第一个参数传递。您可以这样做,因为selfMenuInitial的孩子,因此他们共享相同的内部状态。

如果由于某种原因你 需要将另一个参数传递给Menu,你可以使用functools.partial

itemUp

然后你可以拥有这个:

from functools import partial

[...]

    def itemInput(self):
        func = partial(self.itemUp, "some_argument")
        turtle.Screen().onkey(func, "Up")
        turtle.Screen().listen()