当前位置: 首页 > 知识库问答 >
问题:

在wxPython面板中选择后,Matplotlib工具栏图标将消失

罗鸿畴
2023-03-14

我在wx中的Matplotlib图形画布中使用Matplotlib NavigationToolbar2Wx时间歇性地遇到了这种行为。框架(或wx.面板)。如果选择了缩放图标或平移图标,图标将消失,但在空白区域单击仍会切换工具。“主页”、“后退”或“前进”步骤的图标均按预期运行。

有人能为我提供建议吗。是什么原因造成的。如何修复它?

感谢joaquin发布了最初的代码,稍微修改了工具栏。(http://stackoverflow.com/questions/10737459/embedding-a-matplotlib-figure-inside-a-wxpython-panel)

我正在使用python 2.6,wxPython2.9.2.4osx-碳(经典)和Matplotlib 1.1.0

谢啦

下面的代码显示了问题:

    #!/usr/bin/env python
    # encoding: UTF-8
    """
    wxPython and Matplotlib Canvas with Matplotlib Toolbar.py

    """
    from numpy import arange, sin, pi
    import matplotlib
    matplotlib.use('WXAgg')

    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
    from matplotlib.backends.backend_wx import NavigationToolbar2Wx
    from matplotlib.figure import Figure

    import wx

    class CanvasPanel(wx.Panel):
        def __init__(self, parent):
            wx.Panel.__init__(self, parent)
            self.figure = Figure()
            self.axes = self.figure.add_subplot(111)
            self.canvas = FigureCanvas(self, -1, self.figure)
            # Add Matplotlib Toolbar
            # Add the Matplotlib Navigation toolBar here
            self.toolbar=NavigationToolbar2Wx(self.canvas)
            self.toolbar.AddLabelTool(5,'',wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR, (32,32)))
            #self.Bind(wx.EVT_TOOL, self.NewTitle(), id=5)
            self.toolbar.Realize()      

            # Add to Box Sizer
            self.sizer = wx.BoxSizer(wx.VERTICAL)
            self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.TOP | wx.GROW)
            self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
            self.SetSizer(self.sizer)
            self.Fit()

        def draw(self):
            t = arange(0.0, 3.0, 0.01)
            s = sin(2 * pi * t)
            self.axes.plot(t, s)


    if __name__ == "__main__":
        app = wx.PySimpleApp()
        fr = wx.Frame(None, title='test',size=(800,600))
        panel = CanvasPanel(fr)
        panel.draw()
        fr.Show()
        app.MainLoop()

共有1个答案

萧懿轩
2023-03-14

我不能评论这个特定问题的原因,但是我在WxPython2.9的非Agg后端也遇到了一些问题(虽然代码在2.8中运行正常)。用Agg版本替换工具栏为我解决了这些问题;例如。:

from matplotlib.backends.backend_wx import NavigationToolbar2Wx

==

from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg

并相应地调整代码:

self.toolbar=NavigationToolbar2Wx(self.canvas)

==

self.toolbar = NavigationToolbar2WxAgg(self.canvas)

hth, vbr

 类似资料:
  • 在此对话框您可以指定当浏览磁盘文件夹 (“在压缩文件外部时显示”选项) 或查看压缩文件内容 (“在压缩文件内部时显示”选项 ) 时,要显示哪一些工具栏按钮。可以改变按钮的顺序,只要选择您希望移动的按钮并按下“上移”或“下移”来改变它们的位置。如果您要恢复默认工具栏配置,按下“默认”按钮。 “分隔符”按钮在选择的当前按钮前插入一个分隔符线。如果您要移除一个分隔符,或者取消它的选择状态,或者再次按下“

  • 我在活动文件中有一个膨胀的视图,布局文件碰巧有一个工具栏小部件,我希望用图标填充。我尝试使用code但是没有显示出来,工具栏文本也没有显示出来。布局的代码是这样的... 如何成功地使此工具栏在一个膨胀的视图中显示图标和文本?

  • 如何从工具栏中获取图标以更改为使用bbdd中看到的方法获得的新图标。问题是我无法访问更新活动的事件以更改图标。我尝试使用onPreareOptionsMenu方法,但无法使其工作。我无法通过将代码放入onStart来做到这一点,因为它告诉我菜单对象为空或无效。 我的活动由AppCompactActive扩展并通过AdapterView加载。当我返回片段对话框或从下一个活动开始时,我遇到了问题。 谢

  • 我一直在使用谷歌Chrome开发者工具。突然,工具栏图标消失了。它们通常位于、等的每个元素之上。现在他们走了。我想这没什么,因为我一开始就不需要它们。但是,有没有办法把它们重新打开呢?

  • 我一直在使用谷歌Chrome开发工具。突然,工具栏图标消失了。它们曾经位于、等的上方。。。现在他们走了。我想这没关系,因为我一开始不需要它们。但是,有没有办法把它们重新打开?

  • 工具, 面板, 视图 工具, 面板, 视图 常用快捷键 在全局设置下将单位修改为像素,因其在 CSS 中运用最广 (Preference -> Units & Rulers -> Units) 。设置工作区布局为切图及图片编辑做准备(所需窗口为信息窗口,图层窗口以及历史记录窗口)。 打开『信息窗口』、『图层窗口』、『历史纪录窗口』、『工具面板』、『选项』面板,可以通过 Window -> Work