0

Matplotlib Basemap を TkInter Canvas に追加しようとしています。ベースマップを使用しなくても問題なく動作しますが、1 つの Python をプロットしようとするとクラッシュします。コード ブロック #1 は機能するコードで、コード ブロック #2 はプログラムをクラッシュさせます。#2 の一部を除くすべてを削除するm=Basemap(...)と、クラッシュも発生します。の計算にBasemap(...)は約 6 ~ 7 秒かかります。これが TkInter がクラッシュする原因だと思います。TkInterに待機するように指示する方法はありますか?

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()
4

1 に答える 1