der folgende Code malt Tutorial-/Beispielnah 4 CanvasPanel's
untereinander:
Code: Alles auswählen
# -*- coding: utf-8 -*-
from numpy import arange#, sin, pi
from random import random
import wxversion
#wxversion.select("2.8")
import wx, sys, csv
from random import random
import matplotlib as mpl
mpl.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure
def do_it(self, _event):
pass
class CanvasPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
figure = Figure()
self.axes = figure.add_subplot(111)
self.canvas = FigureCanvas(self, wx.ID_ANY, figure)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
self.SetSizer(sizer)
self.Fit()
def draw(self, data_y):
self.axes.plot(data_y)
self.canvas.draw()
class GraphFrame(wx.Frame):
"""The main frame of the application"""
TITLE = 'test'
def __init__(self):
wx.Frame.__init__(
self,
None,
wx.ID_ANY,
title=self.TITLE,
pos=(50, 50),
size=(1200, 600)
)
self.create_menu()
self.create_status_bar()
self.create_main_panel()
self.data = []
def create_menu(self):
self.menubar = wx.MenuBar()
menu_file = wx.Menu()
m_expt = menu_file.Append(-1, "&Save plot\tCtrl-S", "Save plot to file")
self.Bind(wx.EVT_MENU, self.on_save_plot, m_expt)
menu_file.AppendSeparator()
m_exit = menu_file.Append(-1, "E&xit\tCtrl-X", "Exit")
self.Bind(wx.EVT_MENU, self.on_exit, m_exit)
self.menubar.Append(menu_file, "&File")
self.SetMenuBar(self.menubar)
def create_main_panel(self):
panel = wx.Panel(self)
button1 = wx.Button(panel, wx.ID_ANY, 'B1')
self.Bind(wx.EVT_BUTTON, self.on_button1, button1)
button2 = wx.Button(panel, wx.ID_ANY, 'B2')
self.Bind(wx.EVT_BUTTON, self.on_button2, button2)
button_sizer = wx.BoxSizer(wx.VERTICAL)
canvasSizer = wx.BoxSizer(wx.VERTICAL)
top_content_sizer = wx.BoxSizer(wx.HORIZONTAL)
button_sizer.AddSpacer(20)
button_sizer.Add(button1)
button_sizer.AddSpacer(20)
button_sizer.Add(button2)
button_sizer.AddSpacer(20)
self.subpanel1 = CanvasPanel(panel)
self.subpanel1.SetClientSize((101, 200))
self.subpanel1.draw([0.5] * 2000) #Nullinie
self.subpanel2 = CanvasPanel(panel)
self.subpanel2.draw([0.0] * 2000) #Nullinie
self.subpanel3 = CanvasPanel(panel)
self.subpanel3.draw([0] * 2000) #Nullinie
self.subpanel4 = CanvasPanel(panel)
self.subpanel4.draw([0] * 2000) #Nullinie
canvasSizer.Add(self.subpanel1)
canvasSizer.Add(self.subpanel2)
canvasSizer.Add(self.subpanel3)
canvasSizer.Add(self.subpanel4)
top_content_sizer.AddSpacer(20)
top_content_sizer.Add(button_sizer)
top_content_sizer.AddSpacer(20)
top_content_sizer.Add(canvasSizer)
panel.SetSizer(top_content_sizer)
top_content_sizer.Fit(self)
def create_status_bar(self):
self.statusbar = self.CreateStatusBar()
def on_button1(self, _event):
do_it(self, _event)
print 'B1'
def on_button2(self, _event):
self.subpanel1.draw(self.data)
def on_save_plot(self, _event):
pass
def on_exit(self, _event):
sys.exit()
def runIt():
app = wx.PySimpleApp()
frame=GraphFrame()
frame.Show()
app.MainLoop()
if __name__ == '__main__':
runIt()
-Wo steht so was (Doku)?
Danke
joh