TkInter Matplotlib底图,如图CAVASTKAGG所示
我正在尝试将Matplotlib基本映射添加到TkInter画布。但是,当我试图绘制一个Python崩溃图时,不使用底图也可以很好地工作。代码块#1是有效的代码,代码块#2使我的程序崩溃。如果我删除#2中除TkInter Matplotlib底图,如图CAVASTKAGG所示,matplotlib,tkinter,wait,toolkit,Matplotlib,Tkinter,Wait,Toolkit,我正在尝试将Matplotlib基本映射添加到TkInter画布。但是,当我试图绘制一个Python崩溃图时,不使用底图也可以很好地工作。代码块#1是有效的代码,代码块#2使我的程序崩溃。如果我删除#2中除m=Basemap(…)部分之外的所有内容,它也会崩溃。计算Basemap(…)大约需要6或7秒,我想这就是TkInter崩溃的原因。你知道我怎么让特金特等吗 1: 2: canvas=FigureCanvasTkAgg(m,master=root1) 我认为你不应该在这里用“m” 您应该创建
m=Basemap(…)
部分之外的所有内容,它也会崩溃。计算Basemap(…)
大约需要6或7秒,我想这就是TkInter崩溃的原因。你知道我怎么让特金特等吗
1:
2:
canvas=FigureCanvasTkAgg(m,master=root1)
我认为你不应该在这里用“m”
您应该创建一个地物,并添加一个子地块(ax),然后将该ax传递给basemap
并使用fig作为FigureCastKagg的参数
import matplotlib
matplotlib.use('TkAgg')
from mpl_toolkits.basemap import Basemap
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import sys
if sys.version_info[0] < 3:
import Tkinter as Tk
else:
import tkinter as Tk
root = Tk.Tk()
fig = Figure() ## here
ax1 = fig.add_subplot(111) ## here
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.,
ax=ax1) ## here
m.drawcoastlines()
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='coral',lake_color='aqua')
canvas = FigureCanvasTkAgg(fig, master=root) ## here
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)
root.mainloop()
导入matplotlib
matplotlib.use('TkAgg')
从mpl_toolkits.basemap导入basemap
从matplotlib.figure导入图形
从matplotlib.backends.backend_tkagg导入图CAVASTKAGG
导入系统
如果系统版本信息[0]<3:
将Tkinter作为Tk导入
其他:
将tkinter作为Tk导入
root=Tk.Tk()
图=图()##这里
ax1=图添加_子图(111)###
m=底图(宽=12000000,高=9000000,投影=lcc',
分辨率=c',纬度1=45.,纬度2=55,纬度0=50,经度0=-107。,
ax=ax1)##这里
m、 海岸线
m、 drawmapboundary(填充颜色为aqua)
m、 填充陆地(颜色为珊瑚色,湖水色)
canvas=FigureCanvasTkAgg(fig,master=root)##这里
canvas.show()
canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand=1)
canvas.\u tkcanvas.pack(side=Tk.TOP,fill=Tk.BOTH,expand=1)
root.mainloop()
你说的“崩溃”是什么意思?默认情况下,应阻止任何操作。Python意外退出
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()
import matplotlib
matplotlib.use('TkAgg')
from mpl_toolkits.basemap import Basemap
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import sys
if sys.version_info[0] < 3:
import Tkinter as Tk
else:
import tkinter as Tk
root = Tk.Tk()
fig = Figure() ## here
ax1 = fig.add_subplot(111) ## here
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.,
ax=ax1) ## here
m.drawcoastlines()
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='coral',lake_color='aqua')
canvas = FigureCanvasTkAgg(fig, master=root) ## here
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)
root.mainloop()