📄 printing_in_wx.py
字号:
#!/usr/bin/env python# printing_in_wx.py# """This examples demonstrates Printing (ie, to a printer) with amatplotlib figure using a wx Frame. This borrows the data fromembedding_in_wx.py, but with several changes: Menus for Save export figure (png,eps,bmp) to file Copy copy bitmap of figure to the system clipboard Print Setup setup size of figure for printing Print Preview preview printer page Print send figure to a system printer Exit end application where 'figure' means an image of the matplotlib canvas In addition, "Ctrl-C" is bound to Copy-figure-to-clipboardThis is a very simple use of matplotlib, and mostly focused ondemonstrating the interaction between wxPython and the matplotlibfigure canvas.Matt Newville <newville@cars.uchicago.edu>last modified: 12-Nov-2004license: use it any way you want"""import wximport osimport matplotlib# either WX or WXAgg can be used here. # matplotlib.use('WX')# from matplotlib.backends.backend_wxagg import FigureCanvasWx as FigCanvasmatplotlib.use('WXAgg')from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigCanvasfrom matplotlib.figure import Figureimport matplotlib.numerix as numpyclass PlotFrame(wx.Frame): help_msg=""" Menus for Save export figure (png,eps,bmp) to file Copy copy bitmap of figure to the system clipboard Print Setup setup size of figure for printing Print Preview preview printer page Print send figure to a system printer Exit end application where 'figure' means an image of the matplotlib canvas In addition, "Ctrl-C" is bound to copy-figure-to-clipboard""" start_msg = """ Use Menus to test printing or Ctrl-C to copy plot image to clipboard """ about_msg = """ printing_in_wx version 0.1 12-Nov-2004 Matt Newville <newville@cars.uchicago.edu>""" def __init__(self): wx.Frame.__init__(self, None, -1, "Test Printing with WX Backend") self.fig = Figure((5.0,3.0), 100) self.canvas= FigCanvas(self, -1, self.fig) self.axes = self.fig.add_axes([0.15,0.15,0.75,0.75]) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.canvas, 1, wx.LEFT|wx.TOP|wx.GROW) sizer.Add(wx.StaticText(self,-1, self.start_msg), 0, wx.ALIGN_LEFT|wx.TOP) self.canvas.Bind(wx.EVT_KEY_DOWN, self.onKeyEvent) self.SetSizer(sizer) self.Fit() self.Build_Menus() self.Plot_Data() def Build_Menus(self): """ build menus """ MENU_EXIT = wx.NewId() MENU_SAVE = wx.NewId() MENU_PRINT = wx.NewId() MENU_PSETUP= wx.NewId() MENU_PREVIEW=wx.NewId() MENU_CLIPB =wx.NewId() MENU_HELP =wx.NewId() menuBar = wx.MenuBar() f0 = wx.Menu() f0.Append(MENU_SAVE, "&Export", "Save Image of Plot") f0.AppendSeparator() f0.Append(MENU_PSETUP, "Page Setup...", "Printer Setup") f0.Append(MENU_PREVIEW,"Print Preview...", "Print Preview") f0.Append(MENU_PRINT, "&Print", "Print Plot") f0.AppendSeparator() f0.Append(MENU_EXIT, "E&xit", "Exit") menuBar.Append(f0, "&File"); f1 = wx.Menu() f1.Append(MENU_HELP, "Quick Reference", "Quick Reference") menuBar.Append(f1, "&Help"); self.SetMenuBar(menuBar) self.Bind(wx.EVT_MENU, self.onPrint, id=MENU_PRINT) self.Bind(wx.EVT_MENU, self.onPrinterSetup, id=MENU_PSETUP) self.Bind(wx.EVT_MENU, self.onPrinterPreview, id=MENU_PREVIEW) self.Bind(wx.EVT_MENU, self.onClipboard, id=MENU_CLIPB) self.Bind(wx.EVT_MENU, self.onExport, id=MENU_SAVE) self.Bind(wx.EVT_MENU, self.onExit , id=MENU_EXIT) self.Bind(wx.EVT_MENU, self.onHelp, id=MENU_HELP) # the printer / clipboard methods are implemented # in backend_wx, and so are very simple to use. def onPrinterSetup(self,event=None): self.canvas.Printer_Setup(event=event) def onPrinterPreview(self,event=None): self.canvas.Printer_Preview(event=event) def onPrint(self,event=None): self.canvas.Printer_Print(event=event) def onClipboard(self,event=None): self.canvas.Copy_to_Clipboard(event=event) def onKeyEvent(self,event=None): """ capture , act upon keystroke events""" if event == None: return key = event.KeyCode() if (key < wx.WXK_SPACE or key > 255): return if (event.ControlDown() and chr(key)=='C'): # Ctrl-C self.onClipboard(event=event) def onHelp(self, event=None): dlg = wx.MessageDialog(self, self.help_msg, "Quick Reference", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() def onExport(self,event=None): """ save figure image to file""" file_choices = "PNG (*.png)|*.png|" \ "PS (*.ps)|*.ps|" \ "EPS (*.eps)|*.eps|" \ "BMP (*.bmp)|*.bmp" thisdir = os.getcwd() dlg = wx.FileDialog(self, message='Save Plot Figure as...', defaultDir = thisdir, defaultFile='plot.png', wildcard=file_choices, style=wx.SAVE) if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() self.canvas.print_figure(path,dpi=300) if (path.find(thisdir) == 0): path = path[len(thisdir)+1:] print 'Saved plot to %s' % path def onExit(self,event=None): self.Destroy() def Plot_Data(self): t = numpy.arange(0.0,5.0,0.01) s = numpy.sin(2.0*numpy.pi*t) c = numpy.cos(0.4*numpy.pi*t) self.axes.plot(t,s) self.axes.plot(t,c)if __name__ == '__main__': app = wx.PySimpleApp() fig = PlotFrame() fig.Show(True) app.MainLoop()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -