在搜狗输入法中登录了QQ就出现了调试程序结束时显示python.exe中发现了未经处理的win32异常的问题,以为是pycharm和搜狗的原因,于是乎将其都卸载了,重新下载了vs code可以正常调试,但问题是不习惯用vs code,它的调试结果矩阵显示没有pycharm看起来直观,所以重新下载了pycharm。然后这个问题还是存在(或许这就叫黑天鹅事件吧)=。=
在系统给的调试工具中将调试器类型改为脚本
这是参考了百度上的方法,有用吗?没有用=。=
进行多次断点调试,终于发现是matplotlib有问题,打开console,提示错误信息为:
主线程不在主循环中。。。
网上给的建议是将import matplotlib.pyplot as plt改为:
import matplotlib.pyplot as plt
plt.switch_backend('agg')
改了之后确实不再出现python停止工作的问题了,但图片不再显示了。提示信息是,agg是非用户交互方式,所以不显示图片。这对于一些需要在循环里观测数据变化的情况非常不利。所以还是想解决这个Tkagg显示图片错误的问题。
由于Tkagg是交互式方法,按照网上建议的方法,首先更新了matplotlib的包,然后添加了语句
plt.interactive(True)
报错界面变为了:
interactive模式成功开启了,但还是有错,可能错误原因在于那个我无法理解的“主线程不在主循环中”
看别人对这句话的理解是:
并建议将作图语句注释掉。。。(太粗暴了
matplotlib必须在主线程中进行调用,而多次循环画图可能就会进入其他线程中,我在登录搜狗用户之前(背锅侠xx),程序是可以正常调试的,从来也没有这个问题。所以也许有更好的解决方法。
最终的解决方案是:
采用agg,但对于图片不能显示的这一问题,退而求其次的利用plt.savefig()函数将其保存,并采用os.system('pause')在原本显示图片的地方设置任意键继续,虽然麻烦了些,但也只能如此了=。=