如何将坐标作为参数传递给函数?

时间:2017-04-14 17:36:21

标签: python parameter-passing function-calls zelle-graphics

以下是我的代码,执行后我得到:

TypeError: __init__() missing 1 required positional argument: 'y'

这是我的代码:

def drawUpperCaseT(win, location1):

    letterT = Text(Point(location1), "T")
    letterT.setSize(30)
    letterT.draw(win)

def main():

    #1. Create Graphics Window
    win = GraphWin("My Initials", 600, 600)
    win.setCoords(0,0,100,100)
    location1 = (15,50)

    drawUpperCaseT(win, location1)

    #Capture Mouse to Close
    win.getMouse()
    win.close()

main()

当我将函数中的代码放在main方法中时,它可以工作。但是,当我尝试单独实现它并将location1作为参数传递给drawUpperCaseT时,我得到了错误。似乎y坐标可能会丢失或者某种东西。有人可以解释我需要做些什么才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

从Ducking可以很容易地看到,Point构造函数没有采用元组。相反,它需要单独的x和y参数:Point(x, y)

您可以使用两个单独的参数替换location参数;像这样:

def drawUppercaseT (win, x, y):

或者你可以提取元组成员;像这样:

... Point(location1[0], location1[1]) ...

或者你可以在通话期间压扁元组:

... Point(*location1) ...

我建议展平,因为(1)它很酷; (2)元组比单独的坐标值更有意义; (3)很酷!