暑期实训part1:用pyside2和pyqt5做一个maya插件

界面的编写部分

一.关于pyqt5

pyqt5的下载和使用遇到了很多问题,基本把能踩的雷都踩了一遍,比如在pycharm内部包中无法下载,会报错,用pip下载时可能因为python版本不对无法使用,在网上查了很多资料,解决方法主要如下
解决:用pip下载,在cmd命令行中输入如下代码
在这里插入图片描述-i后的是国内源,比原来的下载速度快很多,国内主要的源有如下几种
在这里插入图片描述假如此种下载方式报错提醒不安全,则需在后边加安全证书
在这里插入图片描述
加在之前的pip代码之后即可
这里需要注意的是pip下载时默认下载到原始python的包目录下
所以在pycharm中需要在setting中设置外部库
在这里插入图片描述在python interpreter中设置外部库在源python的编译环境
若此处进行了更改
还需要注意更改外部库/venu/pyvenu中第二行代码 = true
在这里插入图片描述
Qt设计师制作界面

使用qt设计师首先需要把qt设计师和pyUIC设置为外部工具(方便使用)
qt设计师用来设计ui界面,pyUIC用于把ui界面改为py文件,此处网上教程很多问题不大,此处不再赘述
在这里插入图片描述此为此次设计的界面。总共分为四个模块,用Qt设计师拖入相关模块并注意布局即可
之后就是用pyUIC把ui文件转换为py文件,方便代码的调用

二.关于引用的包和方法
在这里插入图片描述
代码中主要用到了pyside 2 中的一些界面布局效果

try:
    _fromUtf8 = QWidget.Qstring.fromUtf8
except AttributeError:
     def _fromUtf8(s):
         return s

try:
    _encoding = QWidget.QApplication.UnicodeUTF8
    def _translate(context,text,disembig):
        return QtGui.QApplication.translate(context,text,disembig,_encoding)
except AttributeError:
    def _translate(context, text, disembig):
        return QtGui.QApplication.translate(context, text, disembig)

def getMayaWindow():
    ptr = mul.MQtUtil.mainWindow()
    return shiboken2.wrapInstance(long(ptr), QWidget)

def getPresetsFolder():
    mayaAppDirTemp = os.getenv("MAYA_APP_DIR")
    nodePresets = 'Presets/jn_nodePresets'
    filePath = mayaAppDirTemp+' /' +nodePresets
    if not os.path.exists(filePath):
      os.makedirs(filePath)
    return filePath

class JnTreeWidget(QtWidgets.QTreeWidget):
    updateGridLayout =QtCore.Signal(list)
    def __init__(self,parent = None,label = 'Folder',presetDir = None):
        super(JnTreeWidget,self).__init__(parent)
        self.presetDir = presetDir
        self.setColumnCount(1)
        self.setHeaderLabeL(Label)

        actionEdit = QtGui.QAction("New Folder",self)
        actionEdit.triggered.connect(self.addItemAction)
        self.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
        self.addAction(actionEdit)

        actionDelete = QtGui.QAction("Delete",self)
        actionDelete.triggered.connect(self.deleteItem)
        self.addAction(actionDelete)

        self.style()
        self.connections()

    def addItem(self,name,parent):
        self.expandItem(parent)
        item = QtGui.QTreeWidgetItem(parent)
        item.setText(0,name)
        item.setFlags(QtCore.Qt.ItemIsSelectd | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsDragenabled | QtCore.Qt.ItemIsEditabled)
        item.setIcon(0,self.style().standardIcon(QtGui.QStyle.SP_DirIcon))
        return item

    def addItemAction(self):
        parent = self.currentItem()
        if parent is None:
            parent = self.invisibleRootItem()
        new_item = self.addItem(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值