0
TkInter Canvas에 Matplotlib Basemap을 추가하려고합니다. 그러나 기본 맵을 사용하지 않아도 제대로 작동하지만 파이썬 충돌을 일으키려고 할 때. 코드 블록 # 1은 작동하는 코드이며, 코드 블록 # 2는 프로그램을 중단시킵니다. m=Basemap(...)
부분을 제외한 # 2의 모든 항목을 삭제하면 충돌이 발생합니다. Basemap(...)
을 계산하는 데는 약 6 ~ 7 초 정도 걸리므로 TkInter가 충돌하는 이유입니다. TkInter에게 내가 기다릴 수있는 아이디어가 있습니까?TkInter Matplotlib FigureCanvasTkAgg의베이스 맵
1 :
def plot_route(self, geom1, root):
root1 = Tk()
x1, y1 = zip(*((geom1.GetX(i), geom1.GetY(i)) for i in range(geom1.GetPointCount())))
f = Figure(figsize=(5,4), dpi=100)
a = f.add_subplot(111)
a.plot(x1,y1)
a.set_title('Tk embedding')
a.set_xlabel('X axis label')
a.set_ylabel('Y label')
canvas = FigureCanvasTkAgg(f, master=root1)
canvas.show()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)
root1.mainloop()
2 :
def plot_route(self, geom1, root):
root1 = Tk()
m = Basemap(width=12000000,height=9000000,projection='lcc', resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.drawcoastlines()
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='coral',lake_color='aqua')
canvas = FigureCanvasTkAgg(m, master=root1)
canvas.show()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)
root1.mainloop()
'충돌'이란 무엇입니까? 기본적으로 차단해야합니다. – tacaswell
'Python이 예기치 않게 종료 됨 ' –