나는 점 집합을 플롯하고 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