2017-05-21 5 views
2

J'ai utilisé le fichier "graphics.py" de Zelle. J'utilise Thonny. Je veux pour utiliser la fonction "getMouse() & getMouseNow()", mais ces messages apparaissent. Que devrais-je faire ? Aidez moi !Comment utiliser "getMouse() & getMouseNow()" et quel fichier contient ces fonctions?

code:

from graphics import * 

def draw(): 
    win = GraphWin("My Circle", 500, 500) 
    circle = Circle(Point(150,150), 50) 
    circle.draw(win) 
    p = win.getMouse() 
    x = p.x 
    y = p.y 
    circle.moveTo(x,y) 

draw() 

Sortie:

crée une fenêtre de dimensions ci-dessus et un cercle en elle. Après avoir cliqué sur dans la fenêtre ...

Traceback (most recent call last): 
    File "C:\Users\Shivam\Documents\Python\Mouse.py", line 13, in <module> 
     draw() 
    File "C:\Users\Shivam\Documents\Python\Mouse.py", line 10, in draw 
     m = Circle.moveTo(x,y) 
AttributeError: type object 'Circle' has no attribute 'moveTo' 
+0

Veuillez copier le code et le message d'erreur dans la question, cela aide au cas où le fournisseur d'image ne serait plus disponible. –

+1

D'accord, je l'ai mis maintenant. –

Répondre

2

fonction getMouse() retourne une instance de point (http://mcsp.wartburg.edu/zelle/python/graphics.py), à partir duquel vous pouvez extraire x et y. Vous pouvez par exemple utiliser:

p = win.getMouse() 
x = p.x 
y = p.y 

J'espère que cela aide :)

+0

Merci! Cela a fonctionné pour moi, mais maintenant un autre problème a eu lieu. Il dit: AttributeError: l'objet type 'Circle' n'a pas d'attribut 'moveTo' –

+0

J'ai vérifié dans le module et je ne trouve aucune fonction ** moveTo() **. Il y a une fonction ** move() ** mais cela prend un _dx_, _dy_ en entrée. Cela signifie que vous devez soustraire la position actuelle du cercle à la position de votre souris. –

+0

Cela signifie-t-il qu'un autre module devrait avoir 'moveTo()'? Si vous le trouvez, partagez s'il vous plaît. Merci ! –

0

Il n'y a pas de méthode moveTo() et vous ne avez pas besoin, la méthode move() devrait faire ce que vous voulez si vous faites le mouvement relatif à la position centrale de l'objet:

from graphics import * 

win = GraphWin("My Circle", 500, 500) 

# ... 

circle = Circle(Point(150, 150), 50) 
circle.draw(win) 

# ... 

while True: 
    point = win.getMouse() 
    center = circle.getCenter() 
    circle.move(point.x - center.x, point.y - center.y) 
+0

Merci, j'ai eu mes examens donc je n'ai pas répondu. –