Python 当从另一个文件调用plt.savefig时,它将停止工作

Python 当从另一个文件调用plt.savefig时,它将停止工作,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我有一个用于批量数据分析和绘图的代码。但现在我正试图将其整合到一个更大的数据分析GUI中。我发现当我自己运行代码时,一切都很顺利。但当我从主代码调用它并从tkinter按钮运行它时,情况就不一样了。一切看起来都一样,运行也很顺利,唯一的区别是没有保存任何文件 我想可能是哪个窗口定义为“\uuuuuuuuuuuu init\uuuuuuuuuuuu”的问题吧?或者我如何在子代码中创建和销毁Tk()窗口 **stackoverflow文本编辑器使用下划线使文本加粗/简洁,因此对于所有使用双下划线在p

我有一个用于批量数据分析和绘图的代码。但现在我正试图将其整合到一个更大的数据分析GUI中。我发现当我自己运行代码时,一切都很顺利。但当我从主代码调用它并从tkinter按钮运行它时,情况就不一样了。一切看起来都一样,运行也很顺利,唯一的区别是没有保存任何文件

我想可能是哪个窗口定义为“\uuuuuuuuuuuu init\uuuuuuuuuuuu”的问题吧?或者我如何在子代码中创建和销毁Tk()窗口

**stackoverflow文本编辑器使用下划线使文本加粗/简洁,因此对于所有使用双下划线在python中包装“init”或“main”的情况,我必须在每侧使用四个下划线

我的代码(另存为SubCode.py):

def AnalysisFunction():
*做事*
main=Tk()
chdir(OutputFolder)
plt.savefig('image.png'))
main.destroy()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
分析功能()
我想将我的代码添加到:

导入子代码
类顶级(框架):
定义初始(自我,主):
帧。\uuuu初始化(自,主)
*创建主GUI窗口*
MyButton=Button(根,命令=self.CallSubCode)
def调用子代码(自身):
SubCode.AnalysisFunction()
root=Tk()
主窗口=顶层(根)
root.mainloop()

你知道为什么只有子代码可以保存图形,但在被更大的GUI调用时却不能?仅供参考,在运行更大的GUI时,它仍然可以正确创建所有变量。

我认为您应该只将图像保存在SubCode.py中,而不创建tkinter窗口。i、 e

def AnalysisFunction():
    *does things*
    os.chdir(OutputFolder)
    plt.savefig('image.png')
if __name__ == '__main__':
    AnalysisFuntion()

我明白了,我必须将整个子代码放在一个类结构中,然后将其称为自己的顶级应用程序。否则,我认为plt.savefig命令不知道它使用的是哪个Tkinter窗口,并尝试在“主机”窗口中查找数据,而不是在处理数据的窗口中查找数据。

是否确实在
\uuu init\uuu
的每侧有4个下划线?没有,如我的问题所述。代码中每侧只有2个。如果我在这里每边键入两个,stackoverflow文本编辑器会将文本变为粗体,并删除下划线。(一个下划线=意大利语,三个下划线=粗体意大利语)自己试试吧!我认为问题可能是您创建了两个独立的
Tk
实例。他们不能互相交流。这是个好主意!但在这两个级别上,都有一个GUI元素是相当必要的。也许如果我把整个子代码做成一个类,它有自己的init,然后作为一个类运行,那么它就是自己的东西了?我试试这个。