我有一个非常适合批量数据分析和绘图的代码。但是现在我正在尝试将其合并到更大的数据分析GUI中。我发现当我自己运行代码时,一切顺利。但是,当我从主代码调用它并从tkinter按钮运行它时,情况就不一样了。一切看起来都一样,并且运行流畅,唯一的区别是没有文件被保存。
我认为用“ ____init____”定义哪个窗口可能是一个问题?或与我如何在子代码中创建和销毁Tk()窗口有关的东西?
** stackoverflow文本编辑器使用下划线使文本变为粗体/斜体,因此对于所有使用双下划线在python中包装“ init”或“ main”的情况,我在这里必须在每侧使用四个>
我的代码(保存为SubCode.py):
def AnalysisFunction():
*does things*
main = Tk()
os.chdir(OutputFolder)
plt.savefig('image.png')
main.destroy()
if __name__ == '__main__':
AnalysisFuntion()
我想添加我的代码:
import SubCode
class TopLevel(Frame):
def __init__(self, master):
Frame.__init__(self,master)
*Creates main GUI window*
MyButton = Button(root, command = self.CallSubCode)
def CallSubCode(self):
SubCode.AnalysisFunction()
root = Tk()
main_window = TopLevel(root)
root.mainloop()
有什么主意为什么仅子代码可以保存数字,但是在较大的GUI调用时却不能保存数字?仅供参考,通过较大的GUI运行时,它仍然可以正确创建所有变量。
答案 0 :(得分:0)
我认为您应该只将图像保存在SubCode.py中,而不创建tkinter窗口。即
def AnalysisFunction():
*does things*
os.chdir(OutputFolder)
plt.savefig('image.png')
if __name__ == '__main__':
AnalysisFuntion()
答案 1 :(得分:0)
我想通了,我不得不将整个SubCode放在一个类结构中,然后将其称为自己的Toplevel应用程序。我认为,否则plt.savefig命令不知道它正在使用哪个Tkinter窗口,而是尝试在“主机”窗口中查找数据,而不是在处理数据的窗口中查找。