• 批量文件渲染


    import sys
    from PySide2.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog, \
        QTableWidget, QTableWidgetItem, QHBoxLayout, QVBoxLayout, QHeaderView
    from PySide2.QtCore import QFileInfo
    import subprocess
    
    
    class RenderDialog(QWidget):
        def __init__(self):
            super(RenderDialog, self).__init__()
            self.setWindowTitle("Maya Render List")
            self.setGeometry(800, 600, 600, 600)
            self.initUI()
            self.show()
    
        def initUI(self):
            self.file_list = []
            self.table = QTableWidget()
            self.setTableHeader()
    
            # Buttons
            self.add_button = QPushButton("Add..")
            self.clear_button = QPushButton("Clear")
            self.cook_button = QPushButton("Start Render")
            self.quit_button = QPushButton("Quit")
    
            self.add_button.setShortcut("Ctrl+A")
            hbox = QHBoxLayout()
            hbox.addWidget(self.add_button)
            hbox.addWidget(self.clear_button)
    
            hbox.addWidget(self.cook_button)
            hbox.addWidget(self.quit_button)
    
            vbox = QVBoxLayout()
            vbox.addWidget(self.table)
            vbox.addLayout(hbox)
            self.setLayout(vbox)
    
            # Signal
            self.add_button.clicked.connect(self.getFileData)
            self.clear_button.clicked.connect(self.clearTable)
            self.cook_button.clicked.connect(self.cookData)
            self.quit_button.clicked.connect(self.close)
    
        def setTableHeader(self):
            header_labels = ["File Name", "Format", "File Size", "File Path"]
            self.table.setColumnCount(len(header_labels))
            self.table.setHorizontalHeaderLabels(header_labels)
            self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
    
        def getFileData(self):
            files = QFileDialog.getOpenFileNames(self, "Select files", "E:/", "Maya Files(*.ma *.mb)")
            self.file_list = files[0]
            self.fillTable(self.setData(self.file_list))
    
        def setData(self, fl):
            f_list = []
            for file in fl:
                f = QFileInfo(file)
                file_dict = {'File Name': f.baseName(), \
                             'Format': f.suffix(), \
                             'File Size': f.size(), \
                             'File Path': f.absolutePath()}
                f_list.append(file_dict)
            return f_list
    
        def fillTable(self, f_info):
            self.table.setRowCount(len(f_info))
            for i in range(0, len(f_info)):
                self.table.setItem(i, 0, QTableWidgetItem(f_info[i]['File Name']))
                self.table.setItem(i, 1, QTableWidgetItem(f_info[i]['Format']))
                self.table.setItem(i, 2, QTableWidgetItem(str(f_info[i]['File Size'])))
                self.table.setItem(i, 3, QTableWidgetItem(f_info[i]['File Path']))
    
        def clearTable(self):
            self.table.setRowCount(0)
    
        def cookData(self):
            for i in range(0, len(self.file_list)):
                ret = subprocess.run(["C:/Program Files/Autodesk/Maya2019/bin/Render.exe" , \
                                      "-rd", \
                                      "D:/img", \
                                      self.file_list[i]], \
                                      stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    
    if __name__ == "__main__":
        app = QApplication([])
        renderDialog = RenderDialog()
        sys.exit(app.exec_())
  • 相关阅读:
    理清可导、可微、连续...的概念
    f(sinx)到底是啥
    高数基础知识整理7.渐近线与曲率
    高数基础知识整理6.函数单调性与凹凸性
    高数基础知识整理4.导数与微分
    数组、稀疏矩阵、广义表综合应用
    数据库(外键及其约束理解)
    js中按钮去触发定时器,那么多次点击这个定时器会越来越快,解决方法
    JavaScript splice() 方法和JavaScript split() 方法
    javascript中加号(+)操作符的作用
  • 原文地址:https://www.cnblogs.com/TadGuo/p/15867414.html
Copyright © 2020-2023  润新知