我正在使用图书馆龟。 它具有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”类是“菜单”的继承人。我正在学习面向对象。
答案 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将自动作为第一个参数传递。您可以这样做,因为self
是MenuInitial
的孩子,因此他们共享相同的内部状态。
如果由于某种原因你 需要将另一个参数传递给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()