0
我繪製了一組點並將該圖嵌入到Tkinter畫布中。我試圖做的是檢索點擊一個或多個點時的座標。我能夠使用下面的代碼(嵌入到Tkinter之前)完成它。但是,它僅適用於迭代中的第一個圖。我如何擴展它的未來2個地塊?有人可以解釋需要使用畫布完成的更改嗎?從Tkinter畫布中檢索座標
outl=[]
index = []
list_rep = []
def on_pick(event):
thisline = event.artist
xdata, ydata = thisline.get_data()
tmp = []
index.append(i)
ind = event.ind
tmp.append(list(xdata[ind])[0])
tmp.append(list(ydata[ind])[0])
outl.append(tmp)
#print('on pick line:', zip(xdata[ind], ydata[ind]))
new_ydata1 = []
new_ydata2 = []
new_ydata3 = []
for i in range(3):
root = Tk.Tk()
root.wm_title("Embed in Tk")
ydata1 = np.array(Max_Correct_1[i])
ydata2 = np.array(Max_Correct_2[i])
ydata3 = np.array(Max_Correct_3[i])
Aveg=np.array(Avg[i])
f = Figure(figsize=(5,4), dpi=100)
ax1 = f.add_subplot(111)
ax1.axis([-9.5,-4.0,-10,105])
ax1.plot(Log_Values_Array,ydata1,'o',picker=7)
ax1.plot(Log_Values_Array,ydata2,'*',picker=7)
ax1.plot(Log_Values_Array,ydata3,'^',picker=7)
ax1.plot(Log_Values_Array,Aveg,'b--')
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
canvas.mpl_connect('pick_event',on_pick)
print outl
canvas.get_tk_widget().delete("all")
outl=[]
index = []
Tk.mainloop()
我能夠收集座標,但有另一個問題。由於我在循環中運行它,例如3個地塊,它選擇了地塊的座標,但不適用於隨後的地塊。是否有清除/更新丟失的地方?謝謝 – user2332994
這是用matplotlib嗎?如果是這樣,您可能需要爲其添加標籤,並/或在說明中添加該信息。此外,你說它是在抱怨某一行,但沒有顯示投訴是什麼。你能顯示你得到的實際錯誤嗎? –
嗨,Bryan,我能夠擺脫事件錯誤,但在下面的代碼中,當我遍歷地塊並挑選點進行一些計算時,它僅對於地塊#1這樣做。對於情節2和3,pick_event似乎不起作用。 – user2332994