#python #matplotlib #tkinter-canvas
#python #matplotlib #tkinter-canvas
Вопрос:
Я получаю беспорядочный сбой при попытке закрыть мое приложение python tkinter (в ubuntu) после того, как я показал и закрыл график matplotlib. Я просто закрываю окно, используя ‘x’.
invalid command name "140146113720200poll"
while executing
«140146113720200poll»
(сценарий «после»)
Я явно что-то не закрыл должным образом, я нашел пару мест, в которых говорится, что a должен закрыть фигуру при закрытии Windows, но у фигуры нет метода закрытия. Что я должен сделать, чтобы правильно освободить ресурсы, которые я использую?
def plotit(self):
if self.gdata is None:
return
if self.plotframe is None:
self.plotframe = tkinter.Toplevel()
self.plotframe.title('graphy stuff')
self.plotfig = matplotlib.pyplot.figure()
canvas = FigureCanvasTkAgg(self.plotfig, master=self.plotframe)
ax = Axes3D(self.plotfig)
ax.scatter(self.gdata[0],self.gdata[1],self.gdata[2],marker='o',s=1.3)
canvas.show()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
toolbar = NavigationToolbar2TkAgg(canvas, self.plotframe)
toolbar.update()
canvas._tkcanvas.pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
Я попытался настроить действие закрытия tkinter в окне, но это тоже не помогло.
Комментарии:
1. Не смешивайте
pyplot
(который поддерживает все виды состояний) с вашим собственным внедрением в графический интерфейс tk. Вероятно, существует состояние гонки, когда слишком много вещей пытаются разорвать компоненты gui на выходе. См. matplotlib.org/examples/user_interfaces/embedding_in_tk.html