1
我試圖編寫一個腳本,保存劇情(通過matplotlib生成)的前兩個鼠標點擊的座標,暫停腳本,直到發生這些點擊。我試圖通過一個while循環實現「暫停」,一旦回調函數檢測到鼠標點擊了兩次,該循環應該結束。但是,一旦while循環開始運行,單擊繪圖區域似乎不起作用。任何幫助將非常感激。暫停Python腳本,直到用戶雙擊劇情兩次
coords = []
pause = True
fig, ax = plt.subplots()
plt.pcolormesh(x_grid, y_grid, arr)
plt.show()
def onclick(event):
global coords
coords.append((event.xdata, event.ydata))
if (len(coords)==2):
pause = False
fig.canvas.mpl_disconnect(cid)
cid = fig.canvas.mpl_connect('button_press_event', onclick)
while pause:
pass
# ...More code to follow, after the while loop finishes
Andrew,感謝您的建議。不幸的是,這並不奏效,因爲這個塊下面的代碼(在上面用我的評論「#... ...更多代碼遵循,在while循環結束後顯示」)繼續運行,打開窗口。我需要程序暫停以獲得鼠標座標,因爲這些座標在後面的代碼中是需要的。我也可能誤解你的建議,因爲我不清楚plt.show()中的「阻塞」是什麼意思。再次感謝你的幫助。 – Scott
阻塞意味着一旦你調用'plt.show',它就不會執行其他任何事情,它會凍結(或阻塞)執行,直到你把圖表放下。如果你在while循環中添加一個print語句,它不應該打印任何東西,因爲它不會像當前代碼那樣真正進入while循環。 –
謝謝你的解釋。在這種情況下,我懷疑plt.show()沒有被正確阻塞,因爲我的程序執行了plt.show()後面的代碼。 – Scott