def idd_versions(): data_dir = QDir(DATA_DIR) data_dir.setFilter(QDir.Files | QDir.Hidden | QDir.Readable | QDir.NoSymLinks | QDir.NoDotAndDotDot) prefix, sep, postfix = IDD_FILE_NAME_ROOT.partition("{}") versions = [] for file_name in data_dir.entryList(): name = file_name.replace(prefix, '') name = name.replace(postfix, '') versions.append(name) return versions
def findFile(self, _filePath): # 通过递归的方式,遍历所有动画文件 animationFilePath = QDir(_filePath) animationFilePath.setFilter(QDir.Dirs | QDir.Files | QDir.NoDotAndDotDot) animationFilePath.setSorting(QDir.DirsFirst) list = animationFilePath.entryInfoList() if (len(list) < 1): return i = 0 # 采用递归算法 while (i < len(list)): fileInfo = list[i] bisDir = fileInfo.isDir() if (bisDir): self.findFile(fileInfo.filePath()) else: self.AnimationFileList.append(fileInfo.filePath()) i += 1
class Loader(QWidget): def __init__(self, parent=None): super(Loader, self).__init__(parent=parent) self.ui = Ui_Loader() self.ui.setupUi(self) self.dir = QDir(QDir.currentPath() + '/programs/') self.dir.setFilter(QDir.Files or QDir.NoDotAndDotDot) self.fs_watcher = QFileSystemWatcher(self.dir.path()) self.fs_watcher.addPath(self.dir.path()) self.fs_watcher.directoryChanged.connect(self.update_program_list) self.send_status = QProgressDialog self.sender = Sender self.serialpropertiesvalues = \ { 'baudrate': Serial.BAUDRATES, 'parity': Serial.PARITIES, 'databits': Serial.BYTESIZES, 'stopbits': Serial.STOPBITS, 'flowcontrol': ['NoControl', 'SoftwareControl', 'HardwareControl'] } self.update_program_list() self.update_serial_port_list() # self.set_serial_port_options() self.ui.updateProgramListButton.clicked.connect(self.refresh) self.ui.programListWidget.itemSelectionChanged.connect( self.selection_changed) self.ui.sendButton.clicked.connect(self.send_program) self.ui.serialPortChooser.currentTextChanged.connect( self.selection_changed) self.ui.serialPortChooser.currentTextChanged.connect(save_port) # self.ui.baudRateInput.textChanged.connect(save_baud) # self.ui.parityChooser.currentTextChanged.connect(save_parity) # self.ui.dataBitsChooser.currentTextChanged.connect(save_databits) # self.ui.stopBitsChooser.currentTextChanged.connect(save_stopbits) # self.ui.flowControlChooser.currentTextChanged.connect(save_flowcontrol) self.thread_pool = QThreadPool() def set_serial_port_options(self): for key in parities.keys(): self.ui.parityChooser.addItem(key) for key in bytesize.keys(): self.ui.dataBitsChooser.addItem(key) for key in stopbits.keys(): self.ui.stopBitsChooser.addItem(key) self.ui.flowControlChooser.addItems(flowcontrol) if globalSettings.contains('serialport/port'): self.selectpreviousvalues() else: self.saveconfig() def selectpreviousvalues(self): self.ui.serialPortChooser.setCurrentText( globalSettings.value('serialport/port')) self.ui.baudRateInput.setText( globalSettings.value('serialport/baudrate')) self.ui.parityChooser.setCurrentText( globalSettings.value('serialport/parity')) self.ui.dataBitsChooser.setCurrentText( globalSettings.value('serialport/databits')) self.ui.stopBitsChooser.setCurrentText( globalSettings.value('serialport/stopbits')) self.ui.flowControlChooser.setCurrentText( globalSettings.value('serialport/flowcontrol')) def saveconfig(self): save_port(self.ui.serialPortChooser.currentText()) save_baud(self.ui.baudRateInput.text()) save_parity(self.ui.parityChooser.currentText()) save_databits(self.ui.dataBitsChooser.currentText()) save_stopbits(self.ui.stopBitsChooser.currentText()) save_flowcontrol(self.ui.flowControlChooser.currentText()) def update_serial_port_list(self): self.ui.serialPortChooser.clear() for port in list_ports.comports(): self.ui.serialPortChooser.addItem(port.device) def update_program_list(self): self.ui.programListWidget.clear() self.dir.refresh() self.ui.programListWidget.addItems(self.dir.entryList()) self.ui.programListWidget.clearSelection() def selection_changed(self): if self.ui.serialPortChooser.currentText() is not None \ and self.ui.programListWidget.currentItem() is not None: self.ui.sendButton.setEnabled(True) else: self.ui.sendButton.setDisabled(True) def refresh(self): self.update_program_list() self.update_serial_port_list() def send_program(self): selections = self.ui.programListWidget.selectedItems() for selection in selections: filename = selection.text() filepath = self.dir.path() + '/' + filename port_chosen = self.ui.serialPortChooser.currentText() confirm = ConfirmSend(self) confirm.ui.dialogLabel.setText(f'Send program \'{filename}\'?') confirm.exec() if confirm.result() == QDialog.Accepted: self.send_status = QProgressDialog(self) self.sender = Sender( port_chosen, filepath, globalSettings.value('serialport/baudrate'), globalSettings.value('serialport/databits'), globalSettings.value('serialport/parity'), globalSettings.value('serialport/stopbits'), globalSettings.value('serialport/flowcontrol'), self) self.send_status.setMaximum(self.sender.file.size()) self.send_status.canceled.connect(self.sender.cancel) self.sender.signals.update_status.connect( self.send_status.setValue) self.thread_pool.start(self.sender) self.send_status.exec_() self.send_status.deleteLater()