Python 2.7 Python可执行文件与plt.show()挂起
我正在Win10平台上用Python2.7创建一个GUI应用程序(EXE) 应用程序应该使用用户提供的参数绘制图形(使用matplotlib)。当用户更改值并再次按下绘图按钮时,应在保留先前曲线的同一图形上绘制新图形,以便于比较(这也是一项要求) 在运行程序的exe文件时,我必须在脚本末尾使用plt.show()来显示图形 问题:第二次按下绘图按钮时,应用程序冻结并崩溃。这是第一次,一切都很顺利,并显示了图表 尝试的解决方案: 通过这么多线程,我尝试了以下解决方案,但运气不佳:Python 2.7 Python可执行文件与plt.show()挂起,python-2.7,matplotlib,pyqt4,pyinstaller,Python 2.7,Matplotlib,Pyqt4,Pyinstaller,我正在Win10平台上用Python2.7创建一个GUI应用程序(EXE) 应用程序应该使用用户提供的参数绘制图形(使用matplotlib)。当用户更改值并再次按下绘图按钮时,应在保留先前曲线的同一图形上绘制新图形,以便于比较(这也是一项要求) 在运行程序的exe文件时,我必须在脚本末尾使用plt.show()来显示图形 问题:第二次按下绘图按钮时,应用程序冻结并崩溃。这是第一次,一切都很顺利,并显示了图表 尝试的解决方案: 通过这么多线程,我尝试了以下解决方案,但运气不佳: 使用plt.dr
from PyQt4 import QtCore, QtGui
import numpy as np
import matplotlib
matplotlib.use('TkAgg') #Trying different backends
import matplotlib.pyplot as plt
plt.rc('xtick', labelsize = 16)
plt.rc('ytick', labelsize = 16)
import FileDialog #These three imports needed for EXE
import tkFileDialog
import tkMessageBox
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
#UI elements code...
def retranslateUi(self, MainWindow):
#Other code lines
def my_Plot_Function():
#Some calculations
plt.figure('My title')
plt.plot(x, y, label = 'My Label')
plt.grid(True)
plt.axhline(y = 0, color = 'k')
plt.xlabel(' X ', fontsize = 16)
plt.ylabel(' Y ', fontsize = 16)
plt.legend(prop={'size': 14})
plt.show()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
如果没有答案,很难理解发生了什么。首先,从shell/prompt运行脚本时是否也会出现问题?然后,混合框架很少是一个好主意,因为它经常导致意外的行为(这可能是问题的原因),所以您可以使用Qt或tk,而不是两者都使用。最后,不鼓励编辑使用pyuic生成的文件,因为这通常会导致对象结构混乱,并在尝试更新现有UI时产生问题。感谢您的回复。我尝试了这些解决方案,但一个错误导致了另一个错误,一切都搞砸了(我不熟悉使用python创建应用程序)。最后用PYQTGRAPH代替matplotlib解决了这个问题。如果没有。首先,从shell/prompt运行脚本时是否也会出现问题?然后,混合框架很少是一个好主意,因为它经常导致意外的行为(这可能是问题的原因),所以您可以使用Qt或tk,而不是两者都使用。最后,不鼓励编辑使用pyuic生成的文件,因为这通常会导致对象结构混乱,并在尝试更新现有UI时产生问题。感谢您的回复。我尝试了这些解决方案,但一个错误导致了另一个错误,一切都搞砸了(我不熟悉使用python创建应用程序)。最后用PYQTGRAPH代替matplotlib解决了这个问题。