⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpl_with_glade.py

📁 非原创。很好的python例子
💻 PY
字号:
#!/usr/bin/env pythonimport matplotlibmatplotlib.use('GTK')from matplotlib.figure import Figurefrom matplotlib.axes import Subplotfrom matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvasfrom matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbarfrom matplotlib.widgets import HorizontalSpanSelectorfrom matplotlib.numerix import arange, sin, piimport gtkimport gtk.gladedef simple_msg(msg, parent=None, title=None):    dialog = gtk.MessageDialog(        parent         = None,        type           = gtk.MESSAGE_INFO,        buttons        = gtk.BUTTONS_OK,        message_format = msg)    if parent is not None:        dialog.set_transient_for(parent)    if title is not None:        dialog.set_title(title)    dialog.show()    dialog.run()    dialog.destroy()    return Noneclass GladeHandlers:    def on_buttonClickMe_clicked(event):        simple_msg('Nothing to say, really',                   parent=widgets['windowMain'],                   title='Thanks!')class WidgetsWrapper:    def __init__(self):        self.widgets = gtk.glade.XML('mpl_with_glade.glade')        self.widgets.signal_autoconnect(GladeHandlers.__dict__)        self['windowMain'].connect('destroy', lambda x: gtk.main_quit())        self['windowMain'].move(10,10)        self.figure = Figure(figsize=(8,6), dpi=72)        self.axis = self.figure.add_subplot(111)                t = arange(0.0,3.0,0.01)        s = sin(2*pi*t)        self.axis.plot(t,s)        self.axis.set_xlabel('time (s)')        self.axis.set_ylabel('voltage')        self.canvas = FigureCanvas(self.figure) # a gtk.DrawingArea        self.canvas.show()        self.canvas.set_size_request(600, 400)        self.canvas.set_events(            gtk.gdk.BUTTON_PRESS_MASK      |                        gtk.gdk.KEY_PRESS_MASK      |            gtk.gdk.KEY_RELEASE_MASK                )        self.canvas.set_flags(gtk.HAS_FOCUS|gtk.CAN_FOCUS)        self.canvas.grab_focus()        def keypress(widget, event):            print 'key press'        def buttonpress(widget, event):            print 'button press'        self.canvas.connect('key_press_event', keypress)        self.canvas.connect('button_press_event', buttonpress)              def onselect(xmin, xmax):            print xmin, xmax        span = HorizontalSpanSelector(self.axis, onselect, useblit=False,                                          rectprops=dict(alpha=0.5, facecolor='red') )        self['vboxMain'].pack_start(self.canvas, True, True)        self['vboxMain'].show()                # below is optional if you want the navigation toolbar        self.navToolbar = NavigationToolbar(self.canvas, self['windowMain'])        self.navToolbar.lastDir = '/var/tmp/'        self['vboxMain'].pack_start(self.navToolbar)        self.navToolbar.show()        sep = gtk.HSeparator()        sep.show()        self['vboxMain'].pack_start(sep, True, True)        self['vboxMain'].reorder_child(self['buttonClickMe'],-1)    def __getitem__(self, key):        return self.widgets.get_widget(key)widgets = WidgetsWrapper()gtk.main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -