2016-11-17 38 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() 

座標繼續打印無。如何在窗口被按下時獲得win.checkMouse()的座標?Python graphics.py。如何獲得checkMouse()的回報?

+0

你在第一個'win.checkMouse()中忘記了'()'' – furas

回答

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 

試試這個。

如果鼠標自上次調用後未被點擊,checkMouse()函數將返回最後一次鼠標單擊或無。所以在退出while循環時,它會將值單擊爲None。

0

您在第一win.checkMouse()

忘記()在你的榜樣,你有,因爲第一次點擊(和座標)由第一win.checkMouse()while循環逮住點擊兩次。實施例而不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() 

編輯::第二次點擊將由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被獲取結合功能到鼠標按鈕

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