对于我正在开发的游戏,我做了一个课程,并在我的课堂中创建了一个函数。但是,当我尝试在类之外调用此函数时,将显示错误。
游戏使用乌龟创建目标,并在用户单击目标或背景时计算命中和未命中。
class Application(Frame):
def __init__(self, master):
super().__init__(master)
def deletescore():
global score
score -= 1
screen = Screen()
screen.title("Reflex Aim Training")
screen.bgcolor("grey")
screen.onclick(lambda x, y: deletescore())
screen.mainloop()
游戏窗口打开,但是当我尝试单击窗口时(通常算作未命中并从我的得分中减去1),我收到错误消息:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Program Files\Python36\lib\turtle.py", line 675, in eventfun
fun(x, y)
File "I:\My Drive\flowtest.py", line 279, in <lambda>
screen.onclick(lambda x, y: deletescore())
NameError: name 'deletescore' is not defined
答案 0 :(得分:2)
使用Application.deletescore()
。
答案 1 :(得分:0)
在类外定义函数,然后添加到其中。
class Application(Frame):
def __init__(self, master):
super().__init__(master)
def deletescore(self):
global score
score -= 1
Application.deletescore = deletescore
然后就可以使用它了。注意self参数。除非在此示例中以“静态方式”使用,否则类方法通常在类实例上运行。