Python 通过Tkinter关闭/打开绘图

Python 通过Tkinter关闭/打开绘图,python,tkinter,Python,Tkinter,我正在试着用图形用户界面来做一个绘图。这个想法是,当我点击“提交”时,绘图将弹出,如果我再次点击“提交”,绘图将再次关闭和打开 但是,当我单击“提交”时,绘图将正确显示,但我需要手动关闭绘图窗口才能再次释放按钮 我已经清理了我的代码,只包含基本内容: import matplotlib.pyplot as plt # import plot functions from mpl_toolkits.mplot3d import Axes3D from Tkinter import * ####

我正在试着用图形用户界面来做一个绘图。这个想法是,当我点击“提交”时,绘图将弹出,如果我再次点击“提交”,绘图将再次关闭和打开

但是,当我单击“提交”时,绘图将正确显示,但我需要手动关闭绘图窗口才能再次释放按钮

我已经清理了我的代码,只包含基本内容:

import matplotlib.pyplot as plt  # import plot functions
from mpl_toolkits.mplot3d import Axes3D
from Tkinter import *

################################ TKINTER GUI ##################################

root = Tk()

label_1 = Label(root, text="File name:")
entry_1 = Entry(root)
entry_1.insert(0,"Input")
label_1.grid(sticky=E)
entry_1.grid(row=0, column=1, columnspan=3)

def saveentry():
    plt.close()
    name1 = entry_1.get()

################################### PLOTTING ##################################

    fig = plt.figure()
    ax = fig.gca(projection='3d') 

    plt.show(fig)

Button_1 = Button(root, text="Submit", command=saveentry)
Button_1.grid(row=7,column=0, sticky=E)

root.mainloop()

# END OF SCRIPT

我做错了什么?

您需要将后端从Qt4切换到Tk。您当前正在做的是从基于Tkinter的应用程序中打开一个基于Qt的绘图窗口。这是一项工作,但不可互操作

在顶部某处插入以下行(不在
saveentry
函数中):


当我运行Python脚本时,它就像一个绝对的魅力,然而,当我将脚本导出到exe文件时,同样的问题仍然存在。就好像后端开关的那一行不被识别一样?@Martin你用什么冻结你的Python脚本?冻结?Py2Exe?我想您需要将所有Qt库的内容添加到排除列表中。这也会使您的exe变小。@Günter抱歉,我是Python新手,但我认为“冻结”意味着py到exe转换器?在这种情况下,我使用的是“Auto Py to Exe”。@Martin Yes,“冻结”是将Python脚本和依赖项打包到不需要安装Python运行时的可执行文件中的行为。您的GUI程序在后台使用,它实际上只是构建了一个冗长的命令行(请参阅“高级”按钮)。老实说,我会完全抛弃它,只使用命令行。然后您可以参考来编辑打包的库。@Günther我已经尝试使用pyinstaller命令行并操作.spec文件以排除PyQt4包。然而,现在这个程序根本不会运行了?我真的不知道如何获得排除什么和不排除什么的概述?
plt.switch_backend('TkAgg')  # TkAgg (instead Qt4Agg)