【发布时间】:2019-03-18 15:33:50
【问题描述】:
首先,我在 Windows 10 上使用 wxPython-4.0.4、Python 3.7.2 和 matplotlib 3.0.3。这是我的问题。
我想要一个(大)图形和嵌入到 wxPython 中的 NavigationToolbar。该图形应该是可滚动的,而工具栏应该保持在原来的位置。我的方法是将图形放入可滚动面板(wx.lib.scrolledpanel.ScrolledPanel)并将工具栏放在主面板的顶部。这是我下面的代码:
import wx
locale = wx.Locale.GetSystemLanguage() # fix to 'wx._core.wxAssertionError'
from matplotlib.figure import Figure
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar
from wx.lib.scrolledpanel import ScrolledPanel
class Main_Panel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
### Create Widgets
self.plot_panel = ScrolledPanel(self)
self.figure = Figure((10,10)) # creating figure and toolbar
self.canvas = FigureCanvas(self.plot_panel, -1, self.figure)
self.toolbar = NavigationToolbar(self.canvas)
self.subplot = self.figure.add_subplot(111) # just some arbitrary plot
self.subplot.plot([1,2,3], [2,4,1])
### Implement Widgets
self.plot_sizer = wx.BoxSizer(wx.VERTICAL) # sizer for scrollable plot panel
self.plot_sizer.Add(self.toolbar) # putting toolbar here does work but it is also scrolling
self.plot_sizer.Add(self.canvas)
self.plot_panel.SetSizer(self.plot_sizer)
self.plot_panel.SetupScrolling()
self.main_sizer = wx.BoxSizer(wx.VERTICAL) # sizer for main panel
## self.main_sizer.Add(self.toolbar) # putting toolbar here does not work
self.main_sizer.Add(self.plot_panel, proportion=1, flag=wx.EXPAND)
self.SetSizer(self.main_sizer)
def main():
app = wx.App()
app.locale = wx.Locale(locale) # fix to 'wx._core.wxAssertionError'
frame = wx.Frame(None)
Main_Panel(frame)
frame.Show(True)
app.MainLoop()
if __name__ == '__main__':
main()
问题是我无法将图形和工具栏放入两个不同的面板中。如果我将它们放在相同的位置,如果我滚动(显然),工具栏不会保留在屏幕上。但是,如果我尝试通过“main_sizer”将它添加到“顶部”面板,它要么根本不显示,要么在“ScrolledPanel”内也可滚动但无法正常工作。
我还尝试将带有“ScrolledPanel”的整个部分放入单独的类中,但我也无法让工具栏工作。
有人对此有解决方案吗?甚至有可能吗?我必须,甚至可以创建自己的工具栏吗?
另外,为什么我需要在代码中添加两行注释“fix to wx._core.wxAssertionError'”才能让程序运行而不会出现上述错误?
感谢您提供的任何帮助!
【问题讨论】:
标签: python-3.x matplotlib wxpython toolbar