在Mac OS X上以编程方式为Matplotlib选择正确的后端

zep*_*hyr 4 macos tkinter matplotlib python-3.x

我有一个集成了tkinter GUI以及matplotlib图(使用pyplot)的程序。让该程序在各种Mac平台上正常运行时,我遇到了无尽的麻烦。主要问题似乎在于适当选择后端。

在某些情况下,程序运行正常没有问题。在其他情况下,我遇到了与此问题相关的类似问题。实施此处概述的解决方案可以解决该问题,但是其他系统会弹出其他错误。解决这些其他错误的方法似乎是使用Qt4Agg后端。

必须有一些使用tkinter和matplotlib来同时获取程序的标准方法,才能与Mac配合使用。如何以编程方式确保使用了正确的后端,这样该程序对于Mac用户不会崩溃?

抱歉,如果不清楚,这是一个非常广泛的问题。

Rol*_*ony 5

看到这个答案:如何在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
Run Code Online (Sandbox Code Playgroud)

更新:我被认为是OSX的一个后端MacOSX,可以将其添加到该列表中,尽管我无法自己对其进行测试。