2017-04-14 5 views
1

Im Folgenden ist mein Code und wenn sie ausgeführt wird, erhalte ich:Wie übergibt man Koordinaten als Argumente an eine Funktion?

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

Dies ist mein Code:

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() 

Wenn ich den Code aus der Funktion in der main Methode setzte es funktioniert. Wenn ich jedoch versuche, es separat zu implementieren und location1 als Argument an drawUpperCaseT übergeben, erhalte ich den Fehler. Es scheint, dass die y-Koordinate verloren geht oder so. Kann mir bitte jemand erklären, was ich tun muss, damit das funktioniert?

+0

'location1' ist ein Tupel. Sie übergeben ein einzelnes Tupel an "Point". Nimmt es tatsächlich ein Tupel mit einem einzigen Ort als Argument an, oder erwartet es separate x- und y-Argumente? – user2357112

Antwort

1

Von dem, was ich leicht aus Ducking sehen kann, nimmt der Point-Konstruktor kein Tupel. Stattdessen werden separate x- und y-Parameter benötigt: Point(x, y)

Sie können den Positionsparameter entweder durch zwei einzelne Parameter ersetzen; wie folgt:

def drawUppercaseT (win, x, y): 

Oder Sie könnten die Tupel-Mitglieder extrahieren; so wie:

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

Oder Sie könnten abflachen das Tupel während des Gesprächs:

... Point(*location1) ... 

Ich empfehle Abflachung, weil (1) es ist cool; (2) Tupel ergeben mehr Sinn als separate Koordinatenwerte; und (3) es ist cool!

Verwandte Themen