2016-11-17 13 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()関数は最後のマウスクリックを返します。最後の呼び出しからマウスがクリックされなかった場合はNoneが返されます。したがって、whileループを終了している間、クリックされた値はNoneになります。

0

あなたが最初のクリック(座標)はwhileループで最初のwin.checkMouse()によってcatchedされているため、二回クリックする必要があなたの例では、第一win.checkMouse()

()を忘れてしまいました。例

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

sleep()なしEDIT::第二のクリックが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によってcatchedされるマウスボタンに結合機能

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() 
関連する問題