我有一个程序,它集成了tkinter GUI和matplotlib图(使用pyplot)。我在这个程序在各种Mac平台上正常工作时遇到了无穷无尽的麻烦。主要问题似乎是适当选择后端。
在某些情况下,程序运行正常没问题。在其他情况下,我遇到了this question中记录的类似问题。实现其中概述的解决方案可以解决该问题,但其他系统会弹出其他错误。这些其他错误的解决方案似乎是使用Qt4Agg后端。
必须有一些标准的方法来同时使用tkinter和matplotlib获取程序才能与Mac一起玩。如何以编程方式确保使用正确的后端,以便程序不会因Mac用户而崩溃?
很抱歉,如果这很模糊,但这是一个非常广泛的问题。
答案 0 :(得分:4)
请参阅此答案:How to switch backends in matplotlib / Python
实质上,如果您不知道哪个backend
可用,则以下代码应加载当前计算机上可用的第一个backend
。 (我只包括4个后端,还有其他几个)。
import matplotlib
gui_env = ['TKAgg','GTKAgg','Qt4Agg','WXAgg']
for gui in gui_env:
try:
print("testing", gui)
matplotlib.use(gui,warn=False, force=True)
from matplotlib import pyplot as plt
break
except:
continue
print("Using:",matplotlib.get_backend())
Using: GTKAgg
更新:我认为有一个名为MacOSX
的OSX后端可以添加到该列表中,尽管我自己无法对其进行测试。