我正在尝试创建一个简单的点击式游戏。但最近我遇到了一些问题。在我之前的一个问题中,我问过如何解决screen = getscreen()
错误。这个问题得到了回答,但同一天我收到了一个新的错误。
当我尝试单击按钮时,我收到此回溯错误:
TypeError: clicking() takes exactly 0 arguments (2 given) at <unknown>`.
它链接回clicking()
的定义。
定义clicking()
的部分代码:
def clicking():
if distance( button.pos() ) < 2:
BUTTON_CLICKS = BUTTON_CLICKS + 1
整个代码:
import time
import turtle
screen = turtle.Screen()
image_BUTTON = "Button.png"
image_BUTTON_CLICKS = "Button_clicks.png"
image_UPGRADEBG = "UPGRADEBG.png"
button = turtle.Turtle()
BUTTON_CLICKS = 0
BUTTON_CLICKS1 = turtle.Turtle()
BUTTON_CLICKS2 = turtle.Turtle()
upgrade = turtle.Turtle()
upgrade1 = turtle.Turtle()
upgrade2 = turtle.Turtle()
upgrade3 = turtle.Turtle()
upgrade4 = turtle.Turtle()
upgrade5 = turtle.Turtle()
screen.addshape(image_BUTTON)
button.penup()
button.speed(0)
button.left(90)
button.shape(image_BUTTON)
button.goto(0, 0)
BUTTON_CLICKS1.speed(0)
BUTTON_CLICKS1.penup()
BUTTON_CLICKS1.hideturtle()
BUTTON_CLICKS1.goto(-65, 170)
BUTTON_CLICKS1.write("Button clicks: %d" % BUTTON_CLICKS, font=("Bebas", 14, "bold"))
upgrade.speed(0)
upgrade.penup()
upgrade.hideturtle()
upgrade.goto(110, -190)
upgrade.write("Upgrades", font=("Bebas", 13, "bold"))
def clicking():
if distance( button.pos() ) < 2:
BUTTON_CLICKS = BUTTON_CLICKS + 1
screen = turtle.getscreen()
screen.onclick( clicking )
注意:我正在trinket.io
答案 0 :(得分:1)
onclick
接受一个函数作为参数,并使用另外两个参数调用它,点击的点的坐标。
<强> From the documentation: 强>
turtle.onclick(fun, btn=1, add=None)¶
参数: fun - 具有两个参数的函数,将使用画布上单击的点的坐标调用
(强调我的)
因此,当您提供不接受任何参数的函数(clicking()
)时,TypeError
将被引发,因为{{1}将用两个参数调用它。
在您的函数中添加两个参数以删除onclick
,您可以自行决定使用这些参数。
TypeError
答案 1 :(得分:0)
引用official docs(强调我的):
class TestTableModelChoiceField(forms.ModelChoiceField): def label_from_instance(self, obj): # return the field you want to display return obj.display_field class TestForm(forms.ModelForm): type = TestTableModelChoiceField(queryset=Property.objects.all().order_by('desc1'))
参数:
turtle.onclick(fun, btn=1, add=None)
- 一个功能 带有两个参数的将使用坐标调用 点击画布上的点
fun
- 鼠标按钮的编号,默认值 到1(鼠标左键)
num
- 对错 - 如果为True,则为新绑定 将被添加,否则它将取代以前的绑定Bind乐趣 在这只乌龟上鼠标点击事件。
你的函数接受0个参数,docs指定它应该接受两个参数。
将您的功能签名更改为:
add