# -*- coding: utf-8 -*-
"""
Author: Administrator
Date: 2020/5/18 15:18
"""
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 CustomDialog(QtWidgets.QDialog):
WINDOW_TITLE = "Traversing Directories"
DIRECTORY_PATH = "D:/Workspace/PyCharm"
dlg_instance = None
def __init__(self, parent=maya_main_window()):
super(CustomDialog, 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):
self.path_label = QtWidgets.QLabel(self.DIRECTORY_PATH)
self.tree_wdg = QtWidgets.QTreeWidget()
self.tree_wdg.setHeaderHidden(True)
self.close_bttn = QtWidgets.QPushButton("Close")
def create_layout(self):
bttn_layout = QtWidgets.QHBoxLayout()
bttn_layout.addStretch()
bttn_layout.addWidget(self.close_bttn)
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.setContentsMargins(5, 5, 5, 5)
main_layout.addWidget(self.path_label)
main_layout.addWidget(self.tree_wdg)
main_layout.addLayout(bttn_layout)
def create_connections(self):
self.close_bttn.clicked.connect(self.close)
def showEvent(self, event):
super(CustomDialog, self).showEvent(event)
self.refresh_list()
def refresh_list(self):
self.tree_wdg.clear()
self.add_children(None, self.DIRECTORY_PATH)
def add_children(self, parent_item, file_path):
file_dir = QtCore.QDir(file_path)
entry = file_dir.entryList(QtCore.QDir.NoDotAndDotDot | QtCore.QDir.AllEntries, QtCore.QDir.DirsFirst | QtCore.QDir.IgnoreCase)
for i in entry:
self.add_child(parent_item, file_path, i)
def add_child(self, parent_item, file_path, name):
new_path = "{0}/{1}".format(file_path, name)
file_info = QtCore.QFileInfo(new_path)
if file_info.suffix().lower() == "pyc":
return
item = QtWidgets.QTreeWidgetItem(parent_item, [name])
item.setData(0, QtCore.Qt.UserRole, new_path)
if file_info.isDir():
self.add_children(item, new_path)
if not parent_item:
self.tree_wdg.addTopLevelItem(item)
# else:
# parent_item.addChild(item)
def showWindow():
global dialog
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = CustomDialog()
dialog.show()
if __name__ == "__main__":
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = CustomDialog()
dialog.show()
遍历文件目录
最新推荐文章于 2024-02-10 21:04:54 发布