2017-04-14 143 views
1

下面是我的代碼並執行時,我得到:如何將座標作爲參數傳遞給函數?

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座標正在迷失或什麼。有人可以解釋我需要做些什麼才能做到這一點?

+0

'location1'是一個元組。你將一個元組傳遞給'Point'。它實際上是將單個位置元組作爲參數,還是期望單獨的x和y參數? – user2357112

回答

1

從我可以從閃避很容易地看到,點構造並不需要一個元組。相反,它需要獨立的X和Y參數:Point(x, y)

您可以替換爲兩個獨立的參數位置參數;像這樣:

def drawUppercaseT (win, x, y): 

或者你可以提取元組成員;像這樣:

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

或者在通話過程中,你可以扁平元組:

... Point(*location1) ... 

我推薦扁平化,因爲:(1)它很酷; (2)元組比分別的座標值更有意義;和(3)很酷!