def __init__(self,shot): self.shot = shot exportTime = time.time() tmpTime = time.localtime(exportTime) self.dateStr = '%0.4d_%0.2d_%0.2d'%(tmpTime.tm_year, tmpTime.tm_mon, tmpTime.tm_mday) self.localPath = Path.Path().GetLocalPath()+'/'+Get.Get().GetActiveProject()+'/FarmBatch/'+self.dateStr+'/'+self.shot+'/' self.serverPath = lsrunas.lsrunas().Mili_Back_Root+'/'+Get.Get().GetActiveProject()+'/FarmBatch/'+self.dateStr+'/'+self.shot+'/'
def getFilePath(self): #ServerProjectsPath\%ProjectName%\Rigs\%Type%\%Name%\TDAssets\ Prj = Get.Get().GetActiveProject() ServerRoot = Path.Path().GetServerPath() allGroup = cmds.ls(type='transform') keyGroup = [] for item in allGroup: test = item.split('_') if test[-1] == 'GRP' and test[-2] == 'model': keyGroup.append(item) try: tmp_modType = cmds.getAttr(keyGroup[0] + '.Type') keyName = cmds.getAttr(keyGroup[0] + '.treeName') except: #cmds.confirmDialog(title='Oops', message='Plsase open your Rig file first!', button='Gotcha') cmds.textField('textServer', text=u'请打开绑定文件,再重新打开此插件,以获取上传路径', edit=True) return if tmp_modType == 'c': modType = 'Characters' elif tmp_modType == 'p': modType = 'Props' else: print 'Erro modType:%s' % tmp_modType self.ServerRootPath = '%s/%s/Rigs/%s/%s/TDAssets/' % ( ServerRoot, Prj, modType, keyName ) #'ServerProjectsPath/%ProjectName%/Rigs/%Type%/%Name%/TDAssets' #print self.ServerRootPath textServer = self.ServerRootPath.replace('/', '\\') cmds.textField('textServer', text=textServer, edit=True)
def __init__(self): self.Prj = Get.Get().GetActiveProject() #~ 项目名 self.ServerRoot = Path.Path().GetServerPath() #~ 服务器地址 self.LocalRoot = Path.Path().GetLocalPath() #~ 本地地址 self.alLayerShadersInformation = {} #~ alLayer连接的两个材质球信息,用于手动赋予材质 self.erroCollecterList = [] #~ 错误信息收集列表 self.showUploadWindows()
def __init__(self): self.getNamespace() ServerRoot = Path.Path().GetServerPath() LocalRoot = Path.Path().GetLocalPath() Prj = Get.Get().GetActiveProject() #//hnas01/data/Projects/DragonNest2/ self.ServerRootPath = ServerRoot+'/'+Prj+'/'+'Rigs'+'/'+'HugePropsSets'+'/' self.LocalRootPath = LocalRoot+'/'+Prj+'/'+'Rigs'+'/'+'HugePropsSets'+'/' self.ServerFilePath = ServerRoot+'/'+Prj+'/'+'Rigs'+'/'+'Props'+'/'
def RefreshInfo(self): self.z_HUDCompany = "MiLi Pictures" self.z_HUDProject = Get.Get().GetActiveProject() if self.z_HUDAniType: pass else: self.z_HUDAniType = "Animation" try: fileName = cmds.file(q=True,sn=True,shn=True) #get camera if fileName: sp = fileName.split("_") if len(sp) >= 3: self.z_HUDScene = sp[0] self.z_HUDCut = "CUT" + sp[1] else: self.z_HUDScene = "None" self.z_HUDCut = "None" else: self.z_HUDScene = "None" self.z_HUDCut = "None" except: self.z_HUDScene = "None" self.z_HUDCut = "None" self.z_HUDCameraSize = "2048x1152" self.z_HUDCameraFocal = self.getCurrentCamera() if self.z_HUDCameraFocal: pass else: self.z_HUDCameraFocal = '55' try: cmds.headsUpDisplay('MLHUD_Company', r = True) cmds.headsUpDisplay('MLHUD_Project', r = True) cmds.headsUpDisplay('MLHUD_CUT', r = True) cmds.headsUpDisplay('MLHUD_CameraInfo', r = True) cmds.headsUpDisplay("MLHUD_FrameInfo", r = True) cmds.headsUpDisplay("MLHUD_User", r = True) cmds.headsUpDisplay("MLHUD_Timer", r = True) cmds.headsUpDisplay("MLHUD_Description", r = True) except: pass
def __init__(self, env=None): super(TDsCodeUpload, self).__init__() self.env = env self.image_path = IMAGEPATH if self.env == "maya.exe": import Mili.Module.utilties.MiliUser as MiliUser import Mili.Module.utilties.lsrunas as lsrunas import Mili.Module.utilties.Get as Get import Mili.Module.utilties.Path as Path reload(lsrunas) reload(MiliUser) reload(Get) reload(Path) self.department = MiliUser.MiliUser()['department'] self.appointment = MiliUser.MiliUser()['appointment'] self.moduleList = MiliUser.MiliUser().getGroupList() self.project = Get.Get().GetActiveProject() self.projectList = [] self.LocalRoot = Path.Path().GetLocalPath() self.ServerRoot = Path.Path().GetServerPath() listDir = os.listdir('%s/' % self.ServerRoot) for item in listDir: testList = item.split('.') if len(testList) == 1: if testList[0] == 'backUp': pass else: self.projectList.append(item) else: self.department = DEPARTMENT self.appointment = APPOINTMENT self.project = PROJECT self.moduleList = eval(MODULELIST) self.projectList = eval(PROJECTLIST) self.LocalRoot = LOCALROOTPATH self.ServerRoot = SERVERROOTPATH self.showWindows() self.setInitValue() self.setUserRights()
def __init__(self): Prj = Get.Get().GetActiveProject() LocalRootPath = Path.Path().GetLocalPath() + '/' + Prj + '/' #~ 本地的根地址 ServerRootPath = Path.Path().GetServerPath() + '/' #~ 服务器地址 tmp_current_time = str(datetime.datetime.now()) self.date = tmp_current_time.split(' ')[0] self.filename = cmds.file(q=True, expandName=True).split('/')[-1] self.movPath = '' self.originalFilePath = cmds.file(q=True, expandName=True) #~ 原始maya文件地址 self.LocalFilePath = LocalRootPath + "Backup/" #~ 本地拷贝的maya文件的路径,用于lsrunas上传类 """遍历出服务器maya文件地址""" parts = self.originalFilePath.split('/') for i in range(2, len(parts) - 1): ServerRootPath += parts[i] ServerRootPath += '/' self.ServerBackupPath = ServerRootPath + 'Playblast/' + self.date + '/' #~ 服务器maya文件路径,用于lsrunas上传类 self.LocalPlayblastPath = self.movPath #~ 本地拍屏文件路径,用于lsrunas上传类 self.ServerRootPath = ProjectConfig.ProjectConfig().get( 'PlayblastEditRoot', #~ 服务器剪辑目录路径,用于lsrunas上传类 default='//hnas01/Data/Edit/%s/AutoImport/' % Prj)
def projectMenuItem2(self): Prj = Get.Get().GetActiveProject() listDir = os.listdir('//hnas01/data/Projects/') projectList = [] for item in listDir: testList = item.split('.') if len(testList) == 1: if testList[0] == 'backUp': pass else: projectList.append(item) else: pass for i in range(len(projectList)): if projectList[i] == Prj: tmp = projectList[0] projectList[0] = projectList[i] projectList[i] = tmp for item in projectList: cmds.menuItem(label=item) return projectList
def projectMenuItem(self): Prj = Get.Get().GetActiveProject() ServerRoot = Path.Path().GetServerPath() listDir = os.listdir('%s/' % ServerRoot) projectList = [] for item in listDir: testList = item.split('.') if len(testList) == 1: if testList[0] == 'backUp': pass else: projectList.append(item) else: pass for i in range(len(projectList)): if projectList[i] == Prj: tmp = projectList[0] projectList[0] = projectList[i] projectList[i] = tmp for item in projectList: cmds.menuItem(label=item) return projectList
def getherYetiTexture(self): self.Project = Get.Get().GetActiveProject() self.textureRoot = ProjectConfig.ProjectConfig().get( 'DeadlineSubmitter_osImgRoot', default=r'\\hnas01\outrender') + '\\' + self.Project + '_Texture' self.switcher = switchIntermediateTexture.switchIntermediateTexture( Project=self.Project, textureRoot=self.textureRoot, checkTypeList=[ 'pgYetiMaya', ]) if self.switcher.uploadTexAssets(checkOnly=1) != {}: cmds.confirmDialog( message= u'Yeti节点中有丢失的贴图,如果发布.fur文件,农场无法正常渲染这个镜头\n\n请点Confirm来显示丢失的贴图,\n如果您不清楚如何修正丢失的Yeti贴图,请提醒制作Yeti的同事或TD处理' ) self.switcher.uploadTexAssets(checkOnly=2) sys.exit() if 'copyExtraTexToRelativeDir' not in self.__dict__: self.copyExtraTexToRelativeDir = '/Textures/RenderShots/CUT' + '_ManualCache/' self.switcher.uploadTexAssets( recover=1, copyExtraTexToRelativeDir=self.copyExtraTexToRelativeDir)
def __init__(self): self.YetiNodesInformation = [] self.information() if cmds.window('OutputYetiCache', q=1, exists=1): cmds.deleteUI('OutputYetiCache') Mytool = cmds.window('OutputYetiCache', title='OutputYetiCache', width=530, sizeable=False) cmds.rowColumnLayout('mainLayout', numberOfColumns=1, columnWidth=[(1, 530)]) cmds.text(label='Yeti Cache Output', height=30, backgroundColor=[0.5, 0.5, 0.6]) cmds.separator(style='out') cmds.text(' ') cmds.separator(style='out') cmds.scrollLayout('scrollLayoutUnique', height=200) cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 330), (2, 170)]) cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 330)]) cmds.text(u'Yeti节点名称', align='left', backgroundColor=[0.5, 0.4, 0.5], font='boldLabelFont', height=30) #显示Yeti节点 cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 250), (2, 40), (3, 25)]) allYeties = cmds.ls(type='pgYetiMaya') self.selectYeties = cmds.ls(sl=1, leaf=1, dag=1, type='pgYetiMaya') #测试勾选情况 for YetiNode in allYeties: if YetiNode in self.selectYeties: try: transformNode = cmds.listRelatives(YetiNode, parent=True) if cmds.objectType(transformNode, isType='transform') == True: flag = True else: flag = False except: flag = False else: flag = False for YetiNodeInfo in self.YetiNodesInformation: if YetiNodeInfo['ShapeName'] == YetiNode: ID = YetiNodeInfo['ID'] cmds.text('%s' % YetiNode, align='left', height=30) cmds.text('active:', enable=False, height=30) cmds.checkBox('checkBox_%s' % ID, l='', visible=True, value=flag, height=30) cmds.setParent('..') cmds.setParent('..') #显示Yeti节点的参数 cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 60), (2, 60), (3, 60)]) cmds.text(u'起始帧', align='center', backgroundColor=[0.6, 0.5, 0.5], font='boldLabelFont', height=30) cmds.text(u'结束帧', align='center', backgroundColor=[0.5, 0.6, 0.5], font='boldLabelFont', height=30) cmds.text(u'采样值', align='center', backgroundColor=[1, 0.7, 0.5], font='boldLabelFont', height=30) for YetiNodeInfo in self.YetiNodesInformation: ID = YetiNodeInfo['ID'] cmds.textField('startFrame_%s' % ID, text=u'%s' % YetiNodeInfo['startFrame'], backgroundColor=[0.6, 0.5, 0.5], height=30) cmds.textField('endFrame_%s' % ID, text=u'%s' % YetiNodeInfo['endFrame'], backgroundColor=[0.5, 0.6, 0.5], height=30) cmds.textField('sampleValue_%s' % ID, text=u'%s' % YetiNodeInfo['sampleValue'], backgroundColor=[1, 0.7, 0.5], height=30) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') #scrollLayout cmds.separator(style='out') cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 120), (2, 50), (3, 120), (4, 50)]) cmds.text('updateViewport_text', label='updateViewport :', align='center', font='boldLabelFont', height=25, backgroundColor=[0.5, 0.4, 0.5]) cmds.checkBox('updateViewport', l='', align='center', value=False, backgroundColor=[0.5, 0.4, 0.5]) cmds.text('generatePreview_text', label='generatePreview :', align='center', font='boldLabelFont', height=25, backgroundColor=[0.5, 0.4, 0.5]) cmds.checkBox('generatePreview', l='', value=False, align='center', backgroundColor=[0.5, 0.4, 0.5]) cmds.setParent('..') cmds.text(' ') cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 70), (2, 420), (3, 40)]) cmds.text(u'发布地址:', align='center', font='boldLabelFont', height=25, backgroundColor=[0.5, 0.4, 0.5]) cmds.textField('savePath', text=' ', height=25, editable=False) cmds.iconTextButton( style='iconOnly', image='HIKCharacterization_ToolBar_ToggleNameMatch.png', command=lambda *arg: self.getSavePath()) cmds.setParent('..') cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 70), (2, 460)]) cmds.text(u'贴图池子:', align='center', font='boldLabelFont', height=25, backgroundColor=[0.5, 0.4, 0.5]) self.Project = Get.Get().GetActiveProject() self.textureRoot = ProjectConfig.ProjectConfig().get( 'DeadlineSubmitter_osImgRoot', default=r'\\hnas01\outrender') + '\\' + self.Project + '_Texture' cmds.textField('textureRoot', text=self.textureRoot, height=25, editable=False) cmds.setParent('..') cmds.button(parent='mainLayout', label=u'Go!', height=45, command=lambda *arg: self.goCache()) cmds.separator(parent='mainLayout', style='out') cmds.showWindow(Mytool)
def __init__(self, parent=None): globalDefine() if selfApp.lower() != 'maya.exe': app = QtGui.QApplication(sys.argv) else: import maya.OpenMayaUI as omui try: mayaWindowParent = shiboken.wrapInstance( long(omui.MQtUtil.mainWindow()), QtGui.QWidget) except: pass parent = mayaWindowParent super(RedmineErroRepoter, self).__init__(parent) self.imageFilePath = '' self.imageFileName = '' global selfWidget if selfWidget != None: selfWidget.close() selfWidget = self self.setWindowTitle(u'Redmine报错工具') boldFont = QtGui.QFont() boldFont.setBold(True) LogonGroupBox = QtGui.QGroupBox(u'用户登录') NameLabel = QtGui.QLabel() NameLabel.setText(u'用户* :') NameLabel.setFixedWidth(50) NameLabel.setFont(boldFont) self.usr = QtGui.QLineEdit() self.usr.setFixedWidth(200) PasswordLabel = QtGui.QLabel() PasswordLabel.setText(u'密码* :') PasswordLabel.setFixedWidth(50) PasswordLabel.setFont(boldFont) self.password = QtGui.QLineEdit() self.password.setFixedWidth(200) self.password.setEchoMode(QtGui.QLineEdit.Password) grid0 = QtGui.QGridLayout() grid0.addWidget(NameLabel, 1, 0) grid0.addWidget(self.usr, 1, 1) grid0.addWidget(PasswordLabel, 2, 0) grid0.addWidget(self.password, 2, 1) LogonGroupBox.setFixedHeight(100) LogonGroupBox.setLayout(grid0) Label1 = QtGui.QLabel() Label1.setText(u'跟踪*:') Label1.setFont(boldFont) self.tracking = QtGui.QComboBox() self.tracking.setEnabled(True) self.tracking.setEditable(False) self.tracking.addItem(u'问题') self.tracking.setFixedWidth(50) Label2 = QtGui.QLabel() Label2.setText(u'主题*:') Label2.setFont(boldFont) self.topic = QtGui.QLineEdit() self.topic.setMinimumWidth(400) Label3 = QtGui.QLabel() Label3.setText(u'描述:') screenShotButton = QtGui.QPushButton(u'截屏') screenShotButton.clicked.connect(self.screenShot) screenShotButton.setFixedWidth(50) previewButton = QtGui.QPushButton(u'预览') previewButton.clicked.connect(self.preview) previewButton.setFixedWidth(50) uploadImageButton = QtGui.QPushButton(u'上传图片') uploadImageButton.clicked.connect(self.uploadImage) uploadImageButton.setFixedWidth(60) toolLayout = QtGui.QHBoxLayout() toolLayout.addWidget(uploadImageButton) toolLayout.addWidget(previewButton) toolLayout.addWidget(screenShotButton) toolLayout.addStretch(1) self.description = QtGui.QTextEdit() grid1 = QtGui.QGridLayout() grid1.addWidget(Label1, 1, 0) grid1.addWidget(self.tracking, 1, 1) grid1.addWidget(Label2, 2, 0) grid1.addWidget(self.topic, 2, 1) grid1.addWidget(Label3, 3, 0) grid1.addLayout(toolLayout, 3, 1) grid1.addWidget(self.description, 4, 1, 5, 1) conditionLabel = QtGui.QLabel() conditionLabel.setText(u'状态*:') conditionLabel.setFont(boldFont) conditionLabel.setAlignment(QtCore.Qt.AlignRight) self.condition = QtGui.QComboBox() self.condition.addItem(u'新建') self.condition.addItem(u'进行中') self.condition.addItem(u'暂停') self.condition.addItem(u'已解决') self.condition.addItem(u'反馈') self.condition.setFixedWidth(60) priorityLabel = QtGui.QLabel() priorityLabel.setText(u'优先级*:') priorityLabel.setFont(boldFont) priorityLabel.setAlignment(QtCore.Qt.AlignRight) self.priority = QtGui.QComboBox() self.priority.addItem(u'低') self.priority.addItem(u'普通') self.priority.addItem(u'重要') self.priority.addItem(u'紧急') self.priority.addItem(u'重要紧急') self.priority.setFixedWidth(70) assignedLabel = QtGui.QLabel() assignedLabel.setText(u'指派给*:') assignedLabel.setFont(boldFont) assignedLabel.setAlignment(QtCore.Qt.AlignRight) self.assigned = QtGui.QComboBox() self.assigned.setFixedWidth(70) self.assignedTo() #finishDateLabel = QtGui.QLabel() #finishDateLabel.setText(u'完成日期:') #finishDateLabel.setAlignment(QtCore.Qt.AlignRight) self.finishDate = QtGui.QLineEdit() global globalStartDate tmpFinishDate = globalStartDate.split('-') self.finishDateInPlan = tmpFinishDate[0] + '-' + tmpFinishDate[ 1] + '-' + str((int(tmpFinishDate[2]) + 5)) self.finishDate.setText(self.finishDateInPlan) playLabel = QtGui.QLabel() playLabel.setText(u'场次:') playLabel.setAlignment(QtCore.Qt.AlignRight) self.play = QtGui.QLineEdit() global globalPlay self.play.setText(globalPlay) shotLabel = QtGui.QLabel() shotLabel.setText(u'镜号:') shotLabel.setAlignment(QtCore.Qt.AlignRight) self.shot = QtGui.QLineEdit() global globalShot self.shot.setText(globalShot) submitDepartmentLabel = QtGui.QLabel() submitDepartmentLabel.setText(u'提出部门*:') submitDepartmentLabel.setFont(boldFont) submitDepartmentLabel.setAlignment(QtCore.Qt.AlignRight) self.submitDepartment = QtGui.QComboBox() global globalDepartment self.submitDepartment.addItem(globalDepartment) submitPersonLabel = QtGui.QLabel() submitPersonLabel.setText(u'提出问题者*:') submitPersonLabel.setFont(boldFont) submitPersonLabel.setAlignment(QtCore.Qt.AlignRight) self.submitPerson = QtGui.QLineEdit() global globalName self.submitPerson.setText(globalName) reasonLabel = QtGui.QLabel() reasonLabel.setText(u'问题原因:') reasonLabel.setAlignment(QtCore.Qt.AlignRight) self.reason = QtGui.QLineEdit() grid2 = QtGui.QGridLayout() grid2.addWidget(conditionLabel, 1, 0) grid2.addWidget(self.condition, 1, 1) grid2.addWidget(priorityLabel, 2, 0) grid2.addWidget(self.priority, 2, 1) grid2.addWidget(assignedLabel, 3, 0) grid2.addWidget(self.assigned, 3, 1) grid2.addWidget(QtGui.QLabel(' ')) #grid2.addWidget(finishDateLabel,5,0) #grid2.addWidget(self.finishDate,5,1) grid2.addWidget(playLabel, 6, 0) grid2.addWidget(self.play, 6, 1) grid2.addWidget(shotLabel, 7, 0) grid2.addWidget(self.shot, 7, 1) grid2.addWidget(submitDepartmentLabel, 8, 0) grid2.addWidget(self.submitDepartment, 8, 1) grid2.addWidget(submitPersonLabel, 9, 0) grid2.addWidget(self.submitPerson, 9, 1) grid2.addWidget(reasonLabel, 10, 0) grid2.addWidget(self.reason, 10, 1) startDateLabel = QtGui.QLabel() startDateLabel.setText(u'开始日期:') startDateLabel.setAlignment(QtCore.Qt.AlignRight) self.startDate = QtGui.QLineEdit() #global globalStartDate self.startDate.setText(globalStartDate) #finishDatePlanLabel = QtGui.QLabel() #finishDatePlanLabel.setText(u'计划完成日期:') #finishDatePlanLabel.setAlignment(QtCore.Qt.AlignRight) self.finishDatePlan = QtGui.QLineEdit() self.finishDatePlan.setText(self.finishDateInPlan) finishTimeLabel = QtGui.QLabel() finishTimeLabel.setText(u'预期时间:') finishTimeLabel.setAlignment(QtCore.Qt.AlignRight) self.finishTime = QtGui.QLineEdit() self.finishTime.setText(u'小时') self.finishTime.setFixedWidth(100) finishPercentLabel = QtGui.QLabel() finishPercentLabel.setText(u'% 完成:') finishPercentLabel.setAlignment(QtCore.Qt.AlignRight) self.finishPercent = QtGui.QComboBox() self.finishPercent.setFixedWidth(60) self.finishPercent.addItem('0%') self.finishPercent.addItem('10%') self.finishPercent.addItem('20%') self.finishPercent.addItem('30%') self.finishPercent.addItem('40%') self.finishPercent.addItem('50%') self.finishPercent.addItem('60%') self.finishPercent.addItem('70%') self.finishPercent.addItem('80%') self.finishPercent.addItem('90%') self.finishPercent.addItem('100%') finalSolutionLabel = QtGui.QLabel() finalSolutionLabel.setText(u'终极解决方案:') finalSolutionLabel.setAlignment(QtCore.Qt.AlignRight) self.finalSolution = QtGui.QLineEdit() finalSolutionPersonLabel = QtGui.QLabel() finalSolutionPersonLabel.setText(u'解决人:') finalSolutionPersonLabel.setAlignment(QtCore.Qt.AlignRight) self.finalSolutionPerson = QtGui.QLineEdit() belongingLabel = QtGui.QLabel() belongingLabel.setText(u'归属*:') belongingLabel.setFont(boldFont) belongingLabel.setAlignment(QtCore.Qt.AlignRight) self.belonging = QtGui.QComboBox() self.belonging.addItem(u'生产问题') responsiblePersonLabel = QtGui.QLabel() responsiblePersonLabel.setText(u'责任人:') responsiblePersonLabel.setAlignment(QtCore.Qt.AlignRight) self.responsiblePerson = QtGui.QLineEdit() responsibleDepartmentLabel = QtGui.QLabel() responsibleDepartmentLabel.setText(u'责任部门:') responsibleDepartmentLabel.setAlignment(QtCore.Qt.AlignRight) self.responsibleDepartment = QtGui.QLineEdit() provisionalSolutionLabel = QtGui.QLabel() provisionalSolutionLabel.setText(u'临时解决方案:') provisionalSolutionLabel.setAlignment(QtCore.Qt.AlignRight) self.provisionalSolution = QtGui.QLineEdit() projtctNameLabel = QtGui.QLabel() projtctNameLabel.setText(u'项目名:') projtctNameLabel.setAlignment(QtCore.Qt.AlignRight) self.projectName = QtGui.QLineEdit() Prj = Get.Get().GetActiveProject() self.projectName.setText(Prj) propertyNameLabel = QtGui.QLabel() propertyNameLabel.setText(u'资产名:') propertyNameLabel.setAlignment(QtCore.Qt.AlignRight) self.propertyName = QtGui.QLineEdit() fileName = cmds.file(q=True, expandName=True).split('/')[-1] self.propertyName.setText(fileName) grid3 = QtGui.QGridLayout() grid3.addWidget(startDateLabel, 1, 0) grid3.addWidget(self.startDate, 1, 1) #grid3.addWidget(finishDatePlanLabel,2,0) #grid3.addWidget(self.finishDatePlan,2,1) grid3.addWidget(finishTimeLabel, 3, 0) grid3.addWidget(self.finishTime, 3, 1) grid3.addWidget(finishPercentLabel, 4, 0) grid3.addWidget(self.finishPercent, 4, 1) grid3.addWidget(finalSolutionLabel, 5, 0) grid3.addWidget(self.finalSolution, 5, 1) grid3.addWidget(finalSolutionPersonLabel, 6, 0) grid3.addWidget(self.finalSolutionPerson, 6, 1) grid3.addWidget(belongingLabel, 7, 0) grid3.addWidget(self.belonging, 7, 1) grid3.addWidget(responsiblePersonLabel, 8, 0) grid3.addWidget(self.responsiblePerson, 8, 1) grid3.addWidget(responsibleDepartmentLabel, 9, 0) grid3.addWidget(self.responsibleDepartment, 9, 1) grid3.addWidget(provisionalSolutionLabel, 10, 0) grid3.addWidget(self.provisionalSolution, 10, 1) grid3.addWidget(projtctNameLabel, 11, 0) grid3.addWidget(self.projectName, 11, 1) grid3.addWidget(propertyNameLabel, 12, 0) grid3.addWidget(self.propertyName, 12, 1) Layout4 = QtGui.QHBoxLayout() Layout4.addLayout(grid2) Layout4.addSpacing(100) Layout4.addLayout(grid3) fileUploadLabel = QtGui.QLabel() fileUploadLabel.setText(u'上传文件:') fileUploadLabel.setFont(boldFont) fileUploadLabel.setAlignment(QtCore.Qt.AlignCenter) self.fileUploadComboBox = QtGui.QComboBox() self.fileUploadComboBox.setFixedWidth(90) self.fileUploadComboBox.addItem(u'请设置*') self.fileUploadComboBox.addItem(u'上传当前场景') self.fileUploadComboBox.addItem(u'不上传') fileUploadLayout = QtGui.QHBoxLayout() fileUploadLayout.addStretch(1) fileUploadLayout.addWidget(fileUploadLabel) fileUploadLayout.addWidget(self.fileUploadComboBox) upLoadButton = QtGui.QPushButton(u'上传') upLoadButton.setFixedWidth(70) upLoadButton.clicked.connect(self.upload) closeButton = QtGui.QPushButton(u'关闭') closeButton.setFixedWidth(70) closeButton.clicked.connect(self.close) buttonLayout = QtGui.QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(upLoadButton) buttonLayout.addWidget(closeButton) self.mainlayout = QtGui.QVBoxLayout() self.mainlayout.addWidget(LogonGroupBox) self.mainlayout.addSpacing(25) self.mainlayout.addLayout(grid1) self.mainlayout.addSpacing(25) self.mainlayout.addLayout(Layout4) self.mainlayout.addSpacing(25) self.mainlayout.addLayout(fileUploadLayout) self.mainlayout.addSpacing(10) self.mainlayout.addLayout(buttonLayout) self.setLayout(self.mainlayout) flags = QtCore.Qt.WindowFlags() flags |= QtCore.Qt.Tool self.setWindowFlags(flags) self.move(500, 100) self.show()