python3 寫的一個通過ftp遠程批量處理的工具__界面處理代碼

jope3014 8年前發布 | 971 次閱讀 Python

# -- coding: utf-8 --

from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.Qt import Qt, QFileDialog, QMessageBox, QStandardItemModel,\     QModelIndex, QAbstractItemView, QThread, QProgressDialog from ftpFun import ftpInterface from ftpXML import ftpXml import os

class PGThread(QThread):     _signal = QtCore.pyqtSignal(int)     pgValue = 0     def init(self, parent = None):         QThread.init(self, parent)         self.signal.connect(self.parent().setPgValue)          def initTask(self, curInfoL, taskID):         self.curInfo = curInfoL         self.taskID = taskID         '''taskID = 1 upload  taskID = 2 remove  taskID = 3 rename'''         #self.pgdlg.exec()              def run(self):         row = 0         strInfo = ''         step = int(100 / len(self.curInfo))         tmpValue = step         isContinue = True         for cur in self.curInfo:             print(cur)             if(isContinue):                         ftpObj = ftpInterface(cur['ip'], 21, 'xxx', 'xxxxx')                 ftpObj.setlocalPath('')                 if(self.taskID == 1):                     upFilePath = self.parent().folderLineEdit.text()                     print(upFilePath)                     ret = ftpObj.ftpUpLoadFile(upFilePath)                     if(ret == -1):                         isContinue = False                         strInfo = "未找到/voicePrompt/1文件夾"                     elif(ret == -3):                         isContinue = False                         strInfo = "請檢查輸入路徑下無文件數據"                     elif(ret == -2):                         strInfo = "上傳時出現異常"                     else:                         strInfo = "文件已上傳請檢查"                 elif(self.taskID == 2):                     removePath = self.parent().folderLineEdit.text()                     ret = ftpObj.ftpRemoveFile(removePath)                     if(ret == -1):                         isContinue = False                         strInfo = "未找到/voicePrompt/1文件夾"                     elif(ret == -2):                         strInfo = "刪除時出現異常有可能文件不存在"                     else:                         strInfo = "文件已刪除請檢查"                 elif(self.taskID == 3):                     beforeName = self.parent().beforeLineEdit.text()                     afterName = self.parent().afterLineEdit.text()                     tmpName = os.path.basename(afterName)                     dirName = os.path.dirname(beforeName)                     aName = dirName + '//' + tmpName                     ret = ftpObj.ftpRenameFile(beforeName, aName)                     if(ret == -1):                         isContinue = False                         strInfo = "未找到/voicePrompt/1文件夾"                     elif(ret == -2):                         strInfo = "修改時出現異常有可能文件不存在"                     else:                         strInfo = "文件已修改請檢查"             self.parent().Model.setData(self.parent().Model.index(row, 0, QModelIndex()), cur['name'])             self.parent().Model.setData(self.parent().Model.index(row, 1, QModelIndex()), strInfo)             row += 1             tmpValue += step             tmpValue += 1             self._signal.emit(tmpValue)             print(tmpValue)         self.parent().logTbView.setModel(self.parent().Model)

class Ui_Ftp(object):     def setupUi(self, Ftp):                 self.retranslateUi(Ftp)         QtCore.QMetaObject.connectSlotsByName(Ftp)                  '''設置最小化按鈕'''         self.setWindowFlags(Qt.Widget)         #self.setWindowFlags(Qt.WindowMaximizeButtonHint)         self.radioButton.setChecked(True)         self.ftpPathLineEdit.setText("/voicePrompt/1")         #self.ftpPathLineEdit.setDisabled(True)         self.ftpPathLineEdit.setReadOnly(True)         self.hideRenameElemt(False)                  self.ckBoxList = [];         self.checkBoxSignal()                  '''信號和槽'''         self.allCheckBtn.clicked.connect(self.allCheckBtnClicked)         self.clearBtn.clicked.connect(self.clearBtnClicked)         self.isShowArea = False         self.areaShwoBtn.clicked.connect(self.areaShowBtnClicked)         self.openBtn.clicked.connect(self.openBtnClicked)         self.execBtn.clicked.connect(self.execBtnClicked)                           '''operator'''         self.radioButton.clicked['bool'].connect(self.upLoadSetting)         self.radioButton_2.clicked['bool'].connect(self.RemoveFileSetting)         self.radioButton_3.clicked['bool'].connect(self.RenameFileSetting)                  '''ftp ip info'''         ftpX = ftpXml()         self.ipInfo = ftpX.getServerInfo()                  '''exec log'''         '''設置qtabview'''         self.Model = QStandardItemModel()

    def setPgValue(self, value):         if(value >= 100):             self.pg.close()             return         self.pg.setValue(value)          '''具體執行操作'''     def execBtnClicked(self):         ret = self.execLimit()         if(ret == -1):             return         curInfoL = self.getAreaIpInfo()         if(not curInfoL):             QMessageBox.warning(self, '錯誤', '請檢查serverinfo.xml是否存在', QMessageBox.Ok)             return                  pt = PGThread(self)         self.pg = QProgressDialog()         self.pg.setModal(True)         self.pg.show()                  self.Model.clear()         self.Model.setRowCount(len(curInfoL))         self.Model.setColumnCount(2)         self.Model.setHorizontalHeaderLabels(['地區', '執行情況'])         self.logTbView.setEditTriggers(QAbstractItemView.NoEditTriggers)         self.logTbView.update()         taskId = 0         pgTitle = ''         if(self.radioButton.isChecked()):             taskId = 1             pgTitle = "正在上傳..."         elif(self.radioButton_2.isChecked()):             taskId = 2             pgTitle = "正在上傳..."         elif(self.radioButton_3.isChecked()):             taskId = 3             pgTitle = "正在修改..."         self.pg.setWindowTitle(pgTitle)         self.pg.setLabelText("請稍后...")         self.pg.setCancelButton(None)         self.pg.setWindowFlags(Qt.WindowMinimizeButtonHint)         pt.initTask(curInfoL, taskId)         pt.start()                               def getAreaIpInfo(self):         areaStr = self.areaLineEdit.text()         areaList = areaStr.split('、')         '''find areaIp in self.ipinfo'''         curInfo = []         for area in areaList:             for ftpArea in self.ipInfo:                 if(area == ftpArea['name']):                     ip = ftpArea['ip']                     curInfo.append(ftpArea)                     break         return curInfo          def execLimit(self):         if(self.areaLineEdit.text() == ""):             QMessageBox.information(self, "提示", "請輸入地區,多個地區用'、'隔開", QMessageBox.Ok)</pre>


 本文由用戶 jope3014 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!