2016-11-17 2 views
0
win=GraphWin("test",410,505) 

while win.checkMouse==None: 
    rectangle=Rectangle(Point(100,100),Point(300,300)) 
    rectangle.draw(win) 
    rectangle.undraw() 
coordinate=win.checkMouse() 

La coordonnée conserve l'impression Aucune. Comment puis-je obtenir les coordonnées du win.checkMouse() lorsque la fenêtre a été enfoncée?Python graphics.py. Comment obtenir le retour de checkMouse()?

+0

vous avez oublié '()' en premier 'win.checkMouse()' – furas

Répondre

1
win=GraphWin("test",410,505) 

coordinate = win.checkMouse() 
while coordinate == None: 
    rectangle=Rectangle(Point(100,100),Point(300,300)) 
    rectangle.draw(win) 
    rectangle.undraw() 
    coordinate = win.checkMouse() 
print coordinate 

Essayez ceci.

La fonction checkMouse() renvoie le dernier clic de souris ou Aucun si la souris n'a pas été cliquée depuis le dernier appel. Donc, il fait une valeur cliquée à None en quittant la boucle while.

0

Vous avez oublié () dans la première win.checkMouse()

Dans votre exemple, vous devez cliquer deux fois parce que le premier clic (et coordonnées) est attrapée par la première win.checkMouse() en boucle while. Deuxième clic sera attrapée par coordinate = win.checkMouse()

from graphics import * 
import time 

win = GraphWin("test", 410, 505) 

while not win.checkMouse(): 
    rectangle = Rectangle(Point(100, 100), Point(300, 300)) 
    rectangle.draw(win) 
    rectangle.undraw() 

# time for second click 
time.sleep(2) 

coordinate = win.checkMouse() 
print("coordinate:", coordinate) 

win.close() 

EDIT: Exemple sans sleep()

from graphics import * 

win = GraphWin("test", 410, 505) 

rectangle = Rectangle(Point(100, 100), Point(300, 300)) 
rectangle.draw(win) 

while True: 
    coordinate = win.checkMouse() 
    if coordinate: 
     print("coordinate:", coordinate) 
     break 

win.close() 

EDIT: fonction de liaison aux boutons de la souris

from graphics import * 

# --- functions --- 

def on_click_left_button(event): 
    x = event.x 
    y = event.y 
    rectangle = Rectangle(Point(x, y), Point(x+100, y+100)) 
    rectangle.draw(win) 

def on_click_right_button(event): 
    win.close() 
    win.quit() 

# --- main --- 

win = GraphWin("test", 410, 505) 

win.bind('<Button-1>', on_click_left_button) 
win.bind('<Button-3>', on_click_right_button) 

win.mainloop()