Python 在wx.面板上绘制画布?
我在使用Python 在wx.面板上绘制画布?,python,wxpython,Python,Wxpython,我在使用wx.lib.plot.PlotCanvas模块时遇到困难,无法将其显示在面板中。有人能帮我理解我做错了什么吗 #!/usr/bin/python import wx import logging import wx.lib.plot as plot class PlotCanvasExample(wx.Panel): def __init__(self, parent, id, size): ''' Initialization routine for t
wx.lib.plot.PlotCanvas
模块时遇到困难,无法将其显示在面板中。有人能帮我理解我做错了什么吗
#!/usr/bin/python
import wx
import logging
import wx.lib.plot as plot
class PlotCanvasExample(wx.Panel):
def __init__(self, parent, id, size):
''' Initialization routine for the this panel.'''
wx.Panel.__init__(self, parent, id, style=wx.BORDER_NONE, size=desiredSize)
self.data = [(1,2), (2,3), (3,5), (4,6), (5,8), (6,8), (10,10)]
canvas = plot.PlotCanvas(self, size=desiredSize)
line = plot.PolyLine(self.data, legend='', colour='pink', width=2)
gc = plot.PlotGraphics([line], 'Line Graph', 'X Axis', 'Y Axis')
canvas.Draw(gc, xAxis=(0,15), yAxis=(0,15))
if __name__ == '__main__':
''' Simple main program to display this panel. '''
# Create a simple wxFrame to insert the panel into
desiredSize = wx.Size(300,200)
app = wx.App()
frame = wx.Frame(None, -1, 'PlotCanvasExample', size=desiredSize)
example = PlotCanvasExample(frame, -1, size=desiredSize)
frame.Show()
app.MainLoop()
这通过子类化PlotCanvas来实现。 我没有把它放在面板上,而是直接放在框架里
!/usr/bin/python
import wx
import logging
import wx.lib.plot as plot
class PlotCanvasExample(plot.PlotCanvas):
def __init__(self, parent, id, size):
''' Initialization routine for the this panel.'''
plot.PlotCanvas.__init__(self, parent, id, style=wx.BORDER_NONE, size=desiredSize)
self.data = [(1,2), (2,3), (3,5), (4,6), (5,8), (6,8), (10,10)]
line = plot.PolyLine(self.data, legend='', colour='pink', width=2)
gc = plot.PlotGraphics([line], 'Line Graph', 'X Axis', 'Y Axis')
self.Draw(gc, xAxis=(0,15), yAxis=(0,15))
class MyFrame(wx.Frame):
def __init__(self, parent, id ,size):
wx.Frame.__init__(self, parent, id, size=desiredSize)
sizer = wx.BoxSizer(wx.VERTICAL)
self.canvas = PlotCanvasExample(self, 0, size)
sizer.Add(self.canvas, 1, wx.EXPAND, 0)
self.SetSizer(sizer)
self.Layout()
if __name__ == '__main__':
''' Simple main program to display this panel. '''
# Create a simple wxFrame to insert the panel into
desiredSize = wx.Size(300,200)
app = wx.PySimpleApp()
frame = MyFrame(None, -1, size=desiredSize)
frame.Show()
app.MainLoop()
这通过子类化PlotCanvas来实现。 我没有把它放在面板上,而是直接放在框架里
!/usr/bin/python
import wx
import logging
import wx.lib.plot as plot
class PlotCanvasExample(plot.PlotCanvas):
def __init__(self, parent, id, size):
''' Initialization routine for the this panel.'''
plot.PlotCanvas.__init__(self, parent, id, style=wx.BORDER_NONE, size=desiredSize)
self.data = [(1,2), (2,3), (3,5), (4,6), (5,8), (6,8), (10,10)]
line = plot.PolyLine(self.data, legend='', colour='pink', width=2)
gc = plot.PlotGraphics([line], 'Line Graph', 'X Axis', 'Y Axis')
self.Draw(gc, xAxis=(0,15), yAxis=(0,15))
class MyFrame(wx.Frame):
def __init__(self, parent, id ,size):
wx.Frame.__init__(self, parent, id, size=desiredSize)
sizer = wx.BoxSizer(wx.VERTICAL)
self.canvas = PlotCanvasExample(self, 0, size)
sizer.Add(self.canvas, 1, wx.EXPAND, 0)
self.SetSizer(sizer)
self.Layout()
if __name__ == '__main__':
''' Simple main program to display this panel. '''
# Create a simple wxFrame to insert the panel into
desiredSize = wx.Size(300,200)
app = wx.PySimpleApp()
frame = MyFrame(None, -1, size=desiredSize)
frame.Show()
app.MainLoop()
+1,wx.lib.plot.PlotCanvas是一个wx.Panel。不需要单独将其嵌套在另一个面板中。+1,wx.lib.plot.PlotCanvas是一个wx.panel。不需要单独将其嵌套在另一个面板中。