【问题标题】:wxPython Matplotlib.pyplot Conflict?wxPython Matplotlib.pyplot 冲突?
【发布时间】:2018-05-09 15:42:49
【问题描述】:

我今天在使用wxPython 时遇到了这个非常奇怪的错误。这个简单的代码工作正常:

    import wx

    app = wx.App()
    frame = wx.Frame(None, -1, 'simple.py')
    frame.Show()
    app.MainLoop()

但是,一旦我在顶部添加了 matplotlib.pyplot 的导入语句:

    import matplotlib.pyplot as plt

    # then same code as above...

不再显示简单窗口(没有错误,程序停止)。有谁知道问题出在哪里?

环境:macOS High Sierra、Python 3.6.3、wxPython 4.0.0b2、matplotlib 2.1.0

谢谢!

【问题讨论】:

标签: python macos user-interface wxpython


【解决方案1】:

我遇到了同样的问题。对我来说,它只发生在 macOS 上。我可以在 Windows 中正常运行该程序,但不能在 Mac 中运行。我测试了不同版本的 matplotlib 无济于事。我想针对 wxpython 的“经典”版本进行测试,但我无法从 SourceForge 正确下载它。

我通过在我的绘图函数中导入 matplotlib 来解决这个问题。这运行没有错误,但也产生了一些信息警告:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/cbook/deprecation.py:107: MatplotlibDeprecationWarning: The WX backend is deprecated. It's untested and will be removed in Matplotlib 3.0. Use the WXAgg backend instead. See Matplotlib usage FAQ for more info on backends. Use WXAgg instead. warnings.warn(message, mplDeprecation, stacklevel=1)

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/backends/backend_wx.py:319: wxPyDeprecationWarning: Call to deprecated item. Use DrawText instead. gfx_ctx.DrawRotatedText(s, x - xo, y - yo, rads)

所以看起来问题是由于 matplotlib 内部的一些 wx 弃用。

萨克森的罗尔夫的回答也对我有用,并且没有产生警告。

【讨论】:

    【解决方案2】:

    我怀疑它崩溃了,因为您没有可用于后端的特定库,可能是python3-tk 试试:

    from matplotlib import use
    use('WXAgg')
    from matplotlib import pyplot as plt
    import wx
    
    app = wx.App()
    frame = wx.Frame(None, -1, 'simple.py')
    frame.Show()
    app.MainLoop()
    

    【讨论】:

      猜你喜欢
      • 2012-06-27
      • 1970-01-01
      • 2011-07-06
      • 2017-03-22
      • 2010-10-09
      • 2011-11-22
      • 2016-02-25
      • 2011-08-04
      • 2021-06-17
      相关资源
      最近更新 更多