栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

matplotlib的Qt4 + mplot3d

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

matplotlib的Qt4 + mplot3d

虽然这不是您将要看到的最干净的东西。我注意到这不是tkinter后端那么快。然后再次起作用。

玩得开心:

import osimport sysfrom PyQt4 import QtCore,  QtGuifrom matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvasfrom matplotlib.backends.backend_qt4 import NavigationToolbar2QT as NavigationToolbarfrom matplotlib.figure import Figurefrom mpl_toolkits.mplot3d import Axes3Dclass QtMplCanvas(FigureCanvas):    def __init__(self, parent=None, width = 6.5, height = 5.5, dpi = 100, sharex = None, sharey = None, fig = None):        if fig == None: self.fig = Figure(figsize = (width, height), dpi=dpi, facecolor = '#FFFFFF') self.ax = self.fig.add_subplot(111, projection='3d') self.fig.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9) self.ax.hold(True)        else: self.fig = fig        FigureCanvas.__init__(self, self.fig)        FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)        FigureCanvas.updateGeometry(self)    def sizeHint(self):        w, h = self.get_width_height()        return QtCore.QSize(w, h)    def minimumSizeHint(self):        return QtCore.QSize(10, 10)    def sizeHint(self):        w, h = self.get_width_height()        return QtCore.QSize(w, h)    def minimumSizeHint(self):        return QtCore.QSize(10, 10)class MyNavigationToolbar(NavigationToolbar) :    def __init__(self, parent, canvas, direction = 'h' ) :        self.canvas = canvas        QWidget.__init__( self, parent )        if direction=='h' : self.layout = QHBoxLayout( self )        else : self.layout = QVBoxLayout( self )        self.layout.setMargin( 2 )        self.layout.setSpacing( 0 )        NavigationToolbar2.__init__( self, canvas )    def set_message( self, s ):        passclass MPL_WIDGET_3D(QtGui.QWidget):    def __init__(self, parent = None, enableAutoScale = False, enableCSV = False, enableEdit = False, fig = None):        QtGui.QWidget.__init__(self, parent)        self.canvas = QtMplCanvas(fig)        self.canvas.ax.mouse_init()        self.toolbar = NavigationToolbar(self.canvas, self.canvas)        self.vbox = QtGui.QVBoxLayout()        self.vbox.addWidget(self.canvas)        self.vbox.addWidget(self.toolbar)        self.setLayout(self.vbox)        ###########SAVING FIGURE TO CLIPBOARD##########        self.cb = None #will be used for the clipboard        self.tempPath = getHomeDir()        self.tempPath = os.path.join(self.tempPath,'tempMPL.png')        self.mpl2ClipAction = QtGui.QAction("Save to Clipboard",  self)        self.mpl2ClipAction.setShortcut("Ctrl+C")        self.addAction(self.mpl2ClipAction)        QtCore.QObject.connect(self.mpl2ClipAction,QtCore.SIGNAL("triggered()"), self.mpl2Clip)    def mpl2Clip(self):        try: self.canvas.fig.savefig(self.tempPath) tempImg = QtGui.QImage(self.tempPath) self.cb = QtGui.QApplication.clipboard() self.cb.setImage(tempImg)        except: print 'Error copying figure to clipboard' errorMsg = "Sorry: %snn:%sn"%(sys.exc_type, sys.exc_value) print errorMsg####USED TO GET THE USERS HOME DIRECTORY FOR USE OF A TEMP FILEdef valid(path):    if path and os.path.isdir(path):        return True    return Falsedef env(name):    return os.environ.get( name, '' )def getHomeDir():    if sys.platform != 'win32':        return os.path.expanduser( '~' )    homeDir = env( 'USERPROFILE' )    if not valid(homeDir):        homeDir = env( 'HOME' )        if not valid(homeDir) : homeDir = '%s%s' % (env('HOMEDRIVE'),env('HOMEPATH')) if not valid(homeDir) :     homeDir = env( 'SYSTEMDRIVE' )     if homeDir and (not homeDir.endswith('\')) :         homeDir += '\'     if not valid(homeDir) :         homeDir = 'C:\'    return homeDirif __name__ == "__main__":    app = QtGui.QApplication(sys.argv)    mplQt = MPL_WIDGET_3D()    mplQt.show()    sys.exit(app.exec_())


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号