# -*- coding: utf-8 -*-
"""
Author: Administrator
Date: 2020/5/6 22:01
"""
from PySide2 import QtCore
from PySide2 import QtWidgets
from shiboken2 import wrapInstance
import maya.OpenMayaUI as omui
import maya.cmds as cmds
import maya.mel as mel
def maya_main_window():
"""
Return the Maya main window widget as a Python object
"""
main_window_ptr = omui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class TreeViewDialog(QtWidgets.QDialog):
WINDOW_TITLE = "Tree View"
dlg_instance = None
def __init__(self, parent=maya_main_window()):
super(TreeViewDialog, self).__init__(parent)
self.setWindowTitle(self.WINDOW_TITLE)
self.setMinimumSize(600, 400)
self.setWindowFlags(self.windowFlags() ^ QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_layout()
self.create_connections()
def create_widgets(self):
root_path = "{0}scripts".format(cmds.internalVar(userAppDir=True))
self.model = QtWidgets.QFileSystemModel()
self.model.setRootPath(root_path)
self.tree_view = QtWidgets.QTreeView()
self.tree_view.setModel(self.model)
self.tree_view.setRootIndex(self.model.index(root_path))
self.tree_view.hideColumn(1)
self.tree_view.setColumnWidth(0, 240)
# self.model.setFilter(QtCore.QDir.Dirs | QtCore.QDir.NoDotAndDotDot)
self.model.setNameFilters(["*.py", "*.mel"])
self.model.setNameFilterDisables(False)
def create_layout(self):
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.setContentsMargins(2, 2, 2, 2)
main_layout.addWidget(self.tree_view)
def create_connections(self):
self.tree_view.doubleClicked.connect(self.on_double_clicked)
def on_double_clicked(self, index):
path = self.model.filePath(index)
if self.model.isDir(index):
print("Directory selected: {0}".format(path))
else:
print("File selected: {0}".format(path))
@classmethod
def showWindow(cls):
if not cls.dlg_instance:
cls.dlg_instance = TreeViewDialog()
if cls.dlg_instance.isHidden():
cls.dlg_instance.show()
else:
cls.dlg_instance.raise_()
cls.dlg_instance.activateWindow()
if __name__ == "__main__":
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = TreeViewDialog()
dialog.show()
QTreeView File Explorer
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.