我正在研究一個程序,該程序應該在兩點之間進行迭代,以便在給定特定容差的情況下查找函數的根。我的計劃是繪製函數,然後讓用戶通過單擊圖來指定兩個點。我的問題是,我沒有找到任何方法來「pa」程序,直到指定了兩點,它才繼續。例如,下面的代碼給IndexError:列表索引超出範圍要打印COORDS [0] [0]如何讓程序在繼續之前等待鼠標點擊
from matplotlib import pyplot as plt
def on_press(event):
print('you pressed', event.button, event.xdata, event.ydata)
global ix, iy
ix, iy = event.xdata, event.ydata
coords = coords.append([ix, iy])
if len(coords) >1:
fig.canvas.mpl_disconnect(cid)
def get_clicks(fig):
cid = fig.canvas.mpl_connect('button_press_event', on_press)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.show()
coords = []
get_clicks(fig)
print(coords[0])
我想要做的,是必須在代碼等待時「get_clicks(圖)」直到獲得兩次點擊,然後繼續執行其餘的代碼。
更新。
現在,該代碼如下所示:
def bisec(a,b,tol):
print("Hi there!")
return a,b,mid
def on_press(event):
print('you pressed', event.button, event.xdata, event.ydata)
global ix, iy
ix, iy = event.xdata, event.ydata
if len(coords)<=1:
global coords
coords.append([ix, iy])
if len(coords) >1:
#fig.canvas.mpl_disconnect(cid)
print(coords)
bisec(coords[0][0], coords[1][0], 10)
def get_clicks(fig):
global cid
cid = fig.canvas.mpl_connect('button_press_event', on_press)
fig = plt.figure()
ax = fig.add_subplot(111)
coords = []
get_clicks(fig)
plt.show()
所有這一切的目的,我打電話給bisec時已經提供了2個座標,這似乎是目前的結果,精彩!
謝謝!現在座標存儲座標正確,但是,我仍然需要代碼等待2次鼠標點擊。我知道這在Java中是可能的,例如,python中是否存在類似的可能性? – user3105546 2015-04-04 16:53:51
你見過我的編輯嗎? – 2015-04-07 07:58:19
剛纔看到了,謝謝!取得一些進展,我會將原來的問題更新爲當前的代碼。 – user3105546 2015-04-08 09:03:29