界面的编写部分
一.关于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(