def saveRotatedFits(self, name_orig): """ Save the downloaded FITS image """ filename, file_extension = os.path.splitext(name_orig) #fileroot = os.path.basename(filename) #print('file root is ', fileroot) print('Saving ', filename + '_NE.fits') # Dialog to save file fd = QFileDialog() fd.setLabelText(QFileDialog.Accept, "Save as") fd.setNameFilters(["Fits Files (*.fits)", "All Files (*)"]) fd.setOptions(QFileDialog.DontUseNativeDialog) fd.setViewMode(QFileDialog.List) fd.selectFile(filename + '_NE.fits') if (fd.exec()): fileName = fd.selectedFiles() outfile = fileName[0] # Check the filename, file_extension = os.path.splitext(outfile) # basename = os.path.basename(filename) # Primary header image = self.data wcs = self.wcs header = wcs.to_header() header.remove('WCSAXES') header['INSTRUME'] = (self.source, 'Instrument') hdu = fits.PrimaryHDU(image) hdu.header.extend(header) hdul = fits.HDUList([hdu]) hdul.writeto(outfile, overwrite=True) # clobber true allows rewriting hdul.close()
def get_save_file_name(initial_name: str, wav_only=False, caption="Save signal"): global RECENT_PATH if caption == "Save signal": name_filter = "Complex files (*.complex);;Complex16 files (2 unsigned int8) " \ "(*.complex16u);;Complex16 files (2 signed int8) (*.complex16s);;" \ "Compressed complex files (*.coco);;wav files (*.wav);;all files (*)" if wav_only: name_filter = "wav files (*.wav);;all files (*)" elif caption == "Save fuzz profile": name_filter = "Fuzzfiles (*.fuzz.xml *.fuzz);;All files (*)" elif caption == "Save encoding": name_filter = "" elif caption == "Save simulator profile": name_filter = "Simulator (*.sim.xml *.sim);;All files (*)" else: name_filter = "Protocols (*.proto.xml *.proto);;All files (*)" filename = None dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) dialog.setNameFilter(name_filter) dialog.setViewMode(QFileDialog.Detail) dialog.setDirectory(RECENT_PATH) dialog.setLabelText(QFileDialog.Accept, "Save") dialog.setWindowTitle(caption) dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.selectFile(initial_name) if dialog.exec(): filename = dialog.selectedFiles()[0] if filename: RECENT_PATH = os.path.split(filename)[0] return filename
def onLoadClicked(self, fileType): mySettings = QSettings() fileDir = mySettings.value(self.DEFAULT_DIR_KEY) options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog fileDialog = QFileDialog() fileDialog.setDirectory(fileDir) defaultFile = { 0: 'CT-Abdomen.mhd', 1: 'Connected.vtp', 2: 'Liver_3D_Fast_Marching_Closed.vtp', 3: 'VesselVolume.mhd' }[fileType] defaultFile = os.path.join(fileDir, defaultFile) fileName, _ = \ fileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", defaultFile, "All Files (*)MHD Files (*.mhd) VTP Files (*.vtp)", options=options) if fileName: # Update default dir currentDir = QFileInfo(fileName).absoluteDir() mySettings.setValue(self.DEFAULT_DIR_KEY, currentDir.absolutePath()) info = QFileInfo(fileName) if (info.completeSuffix() == "mhd") and fileType == 0: # Load data self.loadFile(fileName) elif (info.completeSuffix() == "vtp") and fileType == 1: self.loadSurface(fileName, contours=True) elif (info.completeSuffix() == "vtp") and fileType == 2: self.loadSurface(fileName, contours=False) elif (info.completeSuffix() == "mhd") and fileType == 3: self.loadUSFile(fileName)
def load_text(self): print("load--csv") dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) dlg.setFilter(QDir.Files) if dlg.exec_(): self.filenames = dlg.selectedFiles() print(self.filenames) fileDevice = QFile(self.filenames[0]) if not fileDevice.open(QIODevice.ReadOnly | QIODevice.Text): return False #f = open(filenames[0], 'r') data = [] #try: #print(fileDevice.atEnd()) while not fileDevice.atEnd(): #print("a") qtBytes = fileDevice.readLine() pyBytes = bytes(qtBytes.data()) # QByteArray转换为bytes类型 lineStr = pyBytes.decode("UTF-8-sig") # bytes转换为str型 lineStr = lineStr.strip() # 去除结尾增加的空行 data.append(lineStr.split(",")) # 返回QByteArray类型 #print(qtBytes) self.data = data print(data[0]) fileDevice.close() localtime = time.localtime(time.time()) time_s =time.strftime("%Y-%m-%d %H:%M:%S",localtime) s_r = "时间:{}读取文件:{}\n".format(time_s,self.filenames) self.logW(s_r) #finally: # print("b") #self.textEdit2.setText(data) self.textEdit.setText("读取成功")
def dlg_export(parent): dialog = QFileDialog(parent) dialog.setWindowTitle(_("Export the simulation as")) dialog.setAcceptMode(QFileDialog.AcceptSave) types = [] types.append(_("gpvdm archive input+output files") + " (*.gpvdm)") types.append(_("gpvdm archive input files") + " (*.gpvdm)") types.append(_("optical materials database") + " (*.zip)") types.append(_("pdf file") + " (*.pdf)") types.append(_("jpg image") + " (*.jpg)") types.append(_("tex file") + " (*.tex)") types.append(_("Excel file") + " (*.xlsx)") dialog.setNameFilters(types) dialog.setFileMode(QFileDialog.ExistingFile) dialog.setAcceptMode(QFileDialog.AcceptSave) if dialog.exec_() == QDialog.Accepted: file_name = dialog.selectedFiles()[0] #print(dialog.selectedNameFilter()) if dialog.selectedNameFilter( ) == _("gpvdm archive input+output files") + " (*.gpvdm)": export_archive(file_name, True) elif dialog.selectedNameFilter( ) == _("gpvdm archive input files") + " (*.gpvdm)": export_archive(file_name, False) elif dialog.selectedNameFilter( ) == _("optical materials database") + " (*.zip)": export_materials(file_name) elif dialog.selectedNameFilter( ) == _("pdf file") + " (*.pdf)" or dialog.selectedNameFilter( ) == _("jpg image") + " (*.jpg)" or dialog.selectedNameFilter( ) == _("tex file") + " (*.tex)": export_as(file_name) elif dialog.selectedNameFilter() == _("Excel file") + " (*.xlsx)": gen_workbook(get_sim_path(), set_file_ext(file_name, ".xlsx"))
def get_save_file_name(initial_name: str, wav_only=False, caption="Save signal"): global RECENT_PATH if caption == "Save signal": name_filter = "Complex (*.complex);;" \ "Complex16 unsigned (*.complex16u *.cu8);;" \ "Complex16 signed (*.complex16s *.cs8);;" \ "Complex compressed (*.coco);;" \ "WAV (*.wav);;" \ "All Files (*)" if wav_only: name_filter = "WAV Files (*.wav);;All Files (*)" elif caption == "Save fuzz profile": name_filter = "Fuzzing Profile (*.fuzz.xml *.fuzz);;All Files (*)" elif caption == "Save encoding": name_filter = "" elif caption == "Save simulator profile": name_filter = "Simulator (*.sim.xml *.sim);;All Files (*)" elif caption == "Export spectrogram": name_filter = "Frequency Time (*.ft);;Frequency Time Amplitude (*.fta)" else: name_filter = "Protocols (*.proto.xml *.proto);;Binary Protocol (*.bin);;All Files (*)" filename = None dialog = QFileDialog(directory=RECENT_PATH, caption=caption, filter=name_filter) dialog.setFileMode(QFileDialog.AnyFile) dialog.setViewMode(QFileDialog.Detail) dialog.setLabelText(QFileDialog.Accept, "Save") dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.selectFile(initial_name) if dialog.exec(): filename = dialog.selectedFiles()[0] if filename: RECENT_PATH = os.path.split(filename)[0] return filename
def get_open_dialog(directory_mode=False, parent=None, name_filter="full") -> QFileDialog: fip = FileIconProvider() dialog = QFileDialog(parent=parent, directory=RECENT_PATH) dialog.setIconProvider(fip) if directory_mode: dialog.setFileMode(QFileDialog.Directory) dialog.setWindowTitle("Open Folder") else: dialog.setFileMode(QFileDialog.ExistingFiles) dialog.setWindowTitle("Open Files") if name_filter == "full": name_filter = "All Files (*);;" \ "Complex (*.complex);;" \ "Complex16 unsigned (*.complex16u *.cu8);;" \ "Complex16 signed (*.complex16s *.cs8);;" \ "WAV (*.wav);;" \ "Protocols (*.proto.xml *.proto);;" \ "Binary Protocols (*.bin);;" \ "Fuzzing Profiles (*.fuzz.xml *.fuzz);;" \ "Simulator (*.sim.xml *.sim)" \ "Plain Bits (*.txt);;" \ "Tar Archives (*.tar *.tar.gz *.tar.bz2);;" \ "Zip Archives (*.zip)" elif name_filter == "proto": name_filter = "Protocols (*.proto.xml *.proto);; Binary Protocols (*.bin)" elif name_filter == "fuzz": name_filter = "Fuzzprofiles (*.fuzz.xml *.fuzz)" elif name_filter == "simulator": name_filter = "Simulator (*.sim.xml *.sim)" dialog.setNameFilter(name_filter) dialog.setOptions(QFileDialog.DontResolveSymlinks) dialog.setViewMode(QFileDialog.Detail) return dialog
def save_measurement_settings_file(self): """ This function saves a measuerment settings file""" fileDialog = QFileDialog() file = fileDialog.getSaveFileName() if file[0]: with open(os.path.normpath(file[0].split(".")[0]) + ".yml", "w+") as fp: self.variables.framework_variables["Configs"]["config"][ "MeasurementSettings"]["Settings_name"] = os.path.basename( file[0]) yaml.safe_dump( self.variables.framework_variables["Configs"]["config"] ["MeasurementSettings"], fp, ) self.variables.framework_variables["Configs"]["additional_files"][ "Measurement_Settings"][os.path.basename( file[0])] = self.variables.framework_variables["Configs"][ "config"]["MeasurementSettings"] self.variables.framework_variables["Configs"]["additional_files"][ "Measurement_Settings"][os.path.basename( file[0])]["raw"] = yaml.dump( self.variables.framework_variables["Configs"]["config"] ["MeasurementSettings"]) self.Settings_gui.select_settings_comboBox.addItem( os.path.basename(file[0])) index = self.Settings_gui.select_settings_comboBox.findText( os.path.basename(file[0]), QtCore.Qt.MatchFixedString) if index >= 0: self.Settings_gui.select_settings_comboBox.setCurrentIndex( index) self.Setlog.info( "Settings file successfully written to: {}".format(file[0]))
def _onExportMixedSignals(self): dlg = ui.selectmixerdialog.SelectMixerDialog( self._mixerFactory.availableMixers(), self) ret = dlg.exec_() if ret != QDialog.Accepted: return try: mixer = self._mixerFactory.getMixer(dlg.selectedMixer) (header, cocktail) = mixer.mix(self._signalModel.allSignals()) fileDlg = QFileDialog(self) fileDlg.setAcceptMode(QFileDialog.AcceptSave) fileDlg.setNameFilters(['CSV file (*.csv)']) if fileDlg.exec_() != QDialog.Accepted: return selFiles = fileDlg.selectedFiles() if len(selFiles) < 1: return outputPath = selFiles[0] writer = csvcocktailwriter.CSVCocktailWriter() writer.write(header, cocktail, outputPath) self._lastOutputPath = os.path.realpath( os.path.dirname(outputPath)) except SignalTraceModelError: pass except signalmixerfactory.NoSuchMixerError as ex: mbox = QMessageBox(QMessageBox.Critical, 'Unable to mix signals', str(ex)) mbox.exec_() except abstractcocktailwriter.CocktailWriterError as ex: mbox = QMessageBox(QMessageBox.Warning, 'Unable to write mixed signals', str(ex)) mbox.exec_()
def addFile(self): dial = QFileDialog() #Получение нужного для добавления файла try: if self.firstOpen: name = dial.getOpenFileName(self, "Choose file", QDir.homePath()) self.firstOpen = False else: name = dial.getOpenFileName(self, "Choose file") file = str( name )[2:-6 - self. filepathStrNum] #('C:/Users/Nikita/Desktop/spiral iz chiesl.py', '') file = file.replace('/', os.path.sep) parts = file.split(os.path.sep) shutil.copyfile(file, os.path.join( 'tmp', parts[-1])) #parts[-1] Собственно имя файла except Exception: dial.accept() return #Получение нужной иконки исходя из расширения файла ext = '.' + parts[-1].split('.')[-1] ext = ext.lower() try: iconpath = self.extensions[ext] except Exception: iconpath = os.path.join(self.resourceFolder, 'blank.png') a = QListWidgetItem(parts[-1]) a.setIcon(QIcon(iconpath)) a.setSizeHint( QSize(100 / 1920 * self.screenWidth, 33 / 1080 * self.screenHeight)) self.list.addItem(a)
def exportAllPosts(self, posts): posts = ujson.loads(posts) print('posts:', posts) fileName = 'Posts compilation at %s' % datetime.now().date() from PyQt5.QtWidgets import QFileDialog dialog = QFileDialog() filePath = dialog.getSaveFileName(None, 'Please select a location to save a post.', fileName + '.txt') filePath = filePath[0] if not filePath: return False def produceSinglePostText(postAsDict): postText = \ u""" %s\n by %s, at %s\n\n """ \ % (postAsDict['Body'], postAsDict['OwnerUsername'], str(datetime.utcfromtimestamp(float(postAsDict['CreationDate'])))) return postText def attachCredits(text): creditsText = \ u"""YOUR SAVED POSTS AT %s %s Gathered from Aether network. Aether is a distributed network of anonymous forums. Join us at www.getaether.net. These posts are licensed under CC-BY-SA. """ % (datetime.now().date(), text) return creditsText finalPostText = u"" for p in posts: finalPostText = finalPostText + produceSinglePostText(p) f = open(filePath, 'wb') f.write(attachCredits(finalPostText).encode('utf8'))# Encode only happens at the end. f.close() return True
def load_maze(self): """ Load a maze from a file. The expected format for the file has the dimensions of the maze on the first line in the format "columns rows" (two integers separated by a space). Then there are columns x rows lines, each containing 2 binary digits indicating whether the cell has a bottom or right wall. In total the file will have columns x rows + 1 lines """ # Allow user to select filename dialog = QFileDialog() path = Path('./mazes') filename = dialog.getOpenFileName(dialog, "Load maze", str(path.resolve()), '*.txt')[0] if not filename: # No filename chosen return False self.display.delete_grid() del self.cells[:] with open(filename, 'r') as file: lines = file.readlines() columns, rows = [int(x) for x in lines[0].split()] self.display.set_maze_dimensions(columns, rows) x, y = 0, 0 for line in lines[1:]: line = line.strip() cell = RunnerCell(x, y, int(line[0]), int(line[1]), self.display) self.cells.append(cell) x = (x + 1) % columns if not x: y = (y + 1) if len(self.cells) != columns * rows: return False return True
def __init__(self, parent: QMainWindow): self._file_dialog = QFileDialog() self.parent = parent # Converter widget that runs hermes' main operations, set in Primary after initialisation of all elements. self.converter = None # Project Parameters/Paths self.project_name = "" self.project_path = "" self.assets_audio_path = "" self.assets_images_path = "" self.export_path = "" self.templates_path = "" self.saves_path = "" # Save file parameters TODO: Create Save Object self.save_fp = None self.save_data = None self.data_author = "" self.data_transcription_language = "" self.data_translation_language = "" # Template parameters self.template_name = None self.template_type = None self.template_data = None self.template_options = TemplateDialog(self.parent, self) # Autosave parameters self.autosave_thread = None self.autosave_fp = None self.autosave_interval = 120 # Seconds # Session Parameters self.save_mode = SaveMode.MANUAL
def openImageBrowser(self): try: ImageBrowser = QFileDialog() options = ImageBrowser.Option() options |= ImageBrowser.DontUseNativeDialog ImageBrowser.setFileMode(QFileDialog.ExistingFiles) ImageBrowser.setNameFilter( ("All Files (*);;Images (*.jpeg *.jpg *.png *.gif)")) if ImageBrowser.exec_(): self.SelectedFileList = ImageBrowser.selectedFiles() if len(self.SelectedFileList) == 0: return self.SelectedFile = self.SelectedFileList[0] if self.SelectedFile.split('.')[-1] not in [ "jpeg", "jpg", "png", "gif" ]: QMessageBox.information(None, "Warning", "Not a valid image file", QMessageBox.Ok) self.ImageEdit.setText(self.SelectedFile) except Exception as err: print(err) QMessageBox.information(None, "Warning", "File did not selected", QMessageBox.Ok)
def show_dlg_path(self): dir_path = '..' dlg_files = QFileDialog() dlg_files.setFileMode(QFileDialog.AnyFile) dlg_files.setLabelText(QFileDialog.LookIn, 'Открыть файл канала режимов ...') dlg_files.setAcceptMode(QFileDialog.AcceptOpen) dlg_files.setDirectory(dir_path) if dlg_files.exec_(): self.table_cycl.clear() self.table_cycl.setRowCount(0) self.table_cycl.setColumnCount(3) self.table_cycl.setHorizontalHeaderLabels(["№", "Время", "Характеристика"]) self.fname = dlg_files.selectedFiles()[0] self.lbl_path.setText(self.fname) if self.thread is not None: self.thread.disconnect() self.thread = None self.num_order = self.get_numord() self.setStatusTip('Идет обработка...') self.thread = CyclogrModeThread(self.fname, self.num_order, self.grafik) self.thread.s_error[str].connect(self.showDlgErr) self.thread.finished.connect(self.finished_cyclogr_mode_thread) self.thread.s_mode.connect(self.update_table) self.thread.start()
def add_image_file(self): """ Slot documentation goes here. """ # TODO: not implemented yet filenames = QFileDialog(self).getOpenFileNames(self, '打开图像文件', filter='Image Files(*.png *.jpg *.bmp *.TIF)') for filename in filenames[0]: self.numOfPicture += 1 f = image.imread(filename) self.width = len(f) self.height = len(f[0]) self.listWidget_IMG.addItem(filename) self.img.append(f) tab = QtWidgets.QWidget() tab.setObjectName("tab") gridLayout_6 = QtWidgets.QGridLayout(tab) gridLayout_6.setContentsMargins(0, 0, 0, 0) gridLayout_6.setObjectName("gridLayout_6") scrollArea_2 = QtWidgets.QScrollArea(tab) scrollArea_2.setWidgetResizable(True) scrollArea_2.setObjectName("scrollArea_2") scrollAreaWidgetContents_2 = QtWidgets.QWidget() scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 570, 548)) scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2") gridLayout_5 = QtWidgets.QGridLayout(scrollAreaWidgetContents_2) gridLayout_5.setContentsMargins(0, 0, 0, 0) gridLayout_5.setObjectName("gridLayout_5") label_Result = QtWidgets.QLabel(scrollAreaWidgetContents_2) label_Result.setObjectName("label_Result") gridLayout_5.addWidget(label_Result, 0, 1, 1, 1) scrollArea_2.setWidget(scrollAreaWidgetContents_2) gridLayout_6.addWidget(scrollArea_2, 0, 0, 1, 1) self.tabWidget.addTab(tab, "") self.tabWidget.setTabText(self.tabWidget.indexOf(tab), '图层' + str(self.numOfPicture)) label_Result.setPixmap(QPixmap(filename))
def _browseForBdvFile(self): """Browse for BigDataViewer file and add the its path to the additionalPluginArgumentsSlot""" starting_dir = self._topLevelOp.WorkingDirectory.value additional_args_ready = self._additionalPluginArgumentsSlot.ready() if additional_args_ready: bdv_file_path = self._additionalPluginArgumentsSlot.value.get( 'bdvFilepath') if bdv_file_path is not None: starting_dir = os.path.split(bdv_file_path)[0] dlg = QFileDialog(self, "BigDataViewer File Location", starting_dir, "XML files (*.xml)") dlg.setAcceptMode(QFileDialog.AcceptOpen) if not dlg.exec_(): return bdv_file_path = dlg.selectedFiles()[0] if additional_args_ready: additional_args = self._additionalPluginArgumentsSlot.value else: additional_args = {} additional_args['bdvFilepath'] = bdv_file_path self._additionalPluginArgumentsSlot.setValue(additional_args) self.bdvFilepath.setText(bdv_file_path)
def seek(self): fileName = "" dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) dialog.setNameFilter( QCoreApplication.translate("ImageEditor", "Images") + " (*.png *.gif *.jpg)All (*)") dialog.setWindowTitle( QCoreApplication.translate("ImageEditor", "Load Image")) dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec(): fileName = dialog.selectedFiles()[0] del dialog if not fileName: return # copy file to assets dir name = os.path.basename(fileName).replace(" ", "_") path = os.path.join(self.site.source_path, "assets", "images", name) self.source.setText(os.path.basename(path)) try: shutil.copy(fileName, path) except shutil.SameFileError: pass # also copy file to deploy dir for previews dpath = os.path.join(self.site.source_path, self.site.output, "assets", "images", name) try: shutil.copy(fileName, dpath) except shutil.SameFileError: pass self.image.setImage(QImage(path)) self.contentChanged()
def openAfterMaybeSave(self): """ This is the method that initiates file opening. It is called by actionOpenSlot to spawn a QFileDialog and connect it to a callback method. """ path = self._file_open_path if util.isWindows(): # required for native looking file window#"/", fname = QFileDialog.getOpenFileName( None, "Open Document", path, "cadnano1 / cadnano2 Files (*.nno *.json *.c25)") self.filesavedialog = None self.openAfterMaybeSaveCallback(fname) else: # access through non-blocking callback fdialog = QFileDialog( self.win, "Open Document", path, "cadnano1 / cadnano2 Files (*.nno *.json *.c25)") fdialog.setAcceptMode(QFileDialog.AcceptOpen) fdialog.setWindowFlags(Qt.Sheet) fdialog.setWindowModality(Qt.WindowModal) self.fileopendialog = fdialog self.fileopendialog.filesSelected.connect( self.openAfterMaybeSaveCallback) fdialog.open()
def LoadMultiFile(Title="Load ...", Filters=['All files (*.*)'], Suffix=None, currentDirectory=None, currentFile=None): from PyQt5.QtWidgets import QDialog, QFileDialog import PyQt5.QtCore as QtCore dialog = QFileDialog() dialog.setWindowTitle(Title) if currentDirectory is not None: if len(currentDirectory): dialog.setDirectory(currentDirectory) if currentFile is not None: dialog.selectFile(currentFile) if Suffix is not None: dialog.setDefaultSuffix(Suffix) dialog.setOption(QFileDialog.DontUseNativeDialog) dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) dialog.setNameFilters(Filters) dialog.setFileMode(QFileDialog.ExistingFiles) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec_() == QDialog.Accepted: return dialog.selectedFiles() return []
def btnChooseDirs_clicked(self): # https://stackoverflow.com/questions/38252419/how-to-get-qfiledialog-to-select-and-return-multiple-folders # just copied :) file_dialog = QFileDialog() file_dialog.setFileMode(QFileDialog.DirectoryOnly) file_dialog.setOption(QFileDialog.DontUseNativeDialog, True) file_dialog.setDirectory(self.sett['/Private settings/Load kinetics last path']) file_view = file_dialog.findChild(QListView, 'listView') # to make it possible to select multiple directories: if file_view: file_view.setSelectionMode(QAbstractItemView.MultiSelection) f_tree_view = file_dialog.findChild(QTreeView) if f_tree_view: f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection) if file_dialog.exec(): for path in file_dialog.selectedFiles(): head, tail = os.path.split(path) head2, tail2 = os.path.split(head) name = os.path.join(tail2, tail) self.sett['/Private settings/Load kinetics last path'] = head if name not in self.lwFolders.item_names: self.lwFolders.addItem(name, path)
def _select_file(self): graphical_image_filters = [ ' '.join(el) for el in self._extension_filters ] + ['All files (*)'] open_file, used_filter = QFileDialog().getSaveFileName( caption='Select the output file', filter=';;'.join(graphical_image_filters)) if not any( open_file.endswith(el[0]) for el in self._extension_filters): extension_from_filter = list( filter(lambda v: ' '.join(v) == used_filter, self._extension_filters)) if extension_from_filter: extension = extension_from_filter[0][0] else: extension = self._extension_filters[0][0] open_file += '.{}'.format(extension) if open_file: self.outputFile_box.setText(open_file) self._update_ok_button()
def fileDialogGetExistingDirectory(parent: typing.Optional[QWidget] = None, caption: str = None, directory: str = None) -> str: # Replacement (sort of) for QFileDialog.getExistingDirectory() if not caption: caption = "Choose directory" fileDialog = QFileDialog(parent, caption, directory) # directory only fileDialog.setFileMode(QFileDialog.DirectoryOnly) # just list mode is quite sufficient for choosing a diectory fileDialog.setViewMode(QFileDialog.List) # only want to to show directories fileDialog.setOption(QFileDialog.ShowDirsOnly) # native dialog, at least under Ubuntu GNOME is a bit naff for choosing a directory # (shows files but greyed out), so going for Qt's own cross-plaform chooser fileDialog.setOption(QFileDialog.DontUseNativeDialog) # get rid of (or at least grey out) file-types selector fileDialog.setOption(QFileDialog.HideNameFilterDetails) # DontResolveSymlinks seemingly recommended by http://doc.qt.io/qt-5/qfiledialog.html#getExistingDirectory # but I found it didn't make any difference (symlinks resolved anyway) # fileDialog.setOption(QtWidgets.QFileDialog.DontResolveSymlinks) if not fileDialog.exec(): return "" return fileDialog.selectedFiles()[0]
def __onFileDialog(self): self.__filePath_, fileType = QFileDialog().getOpenFileName(self , "选取tlv文件" , os.getcwd() , "All Files (*);;Tlv Files (*.tlv*)") if self.__filePath_ == '': return if self.__itemDialog_ is not None: self.__itemDialog_.destroy() self.__itemDialog_ = None self.__itemDialog_ = QDialog() self.__itemDialog_.resize(500, 80) self.__itemDialog_.setWindowTitle('文件路径') text = QLabel(self.__itemDialog_) if self.__filePath_ == '': text.setText('未获取到文件路径') else: text.setText(self.__filePath_) # 模态,只有关闭对话框,才能关闭主窗口 self.__itemDialog_.setWindowModality(Qt.ApplicationModal) self.__itemDialog_.show()
def ChooseOldApks(self): self.logger.info("FUNC: %s" % sys._getframe().f_code.co_name) global oldapkspath self.textEdit.clear() packagename = self.text_packagename.text() #新版本的packagename filedialog = QFileDialog() filedialog.setNameFilter("Get Files(*.apk)") path = filedialog.getOpenFileNames( self, "选取文件", "C:/", "APK Files (*.apk);;Text Files (*.txt)") if path != "": apkspath = path[0] if apkspath != []: self.textEdit.clear() for x in apkspath: pids = self.GetApkInfo(x) if pids[1][6:-1] != packagename: QMessageBox.warning(self, "警告", "packageName新老版本不一致,请重新选择!", QMessageBox.Yes) return 0 else: oldapkspath[x] = [ pids[1][6:-1], pids[pids.index('launchable-activity:') + 1][6:-1], pids[2], pids[3] ] for (k, v) in oldapkspath.items(): #s = str(k)+ "\\r" +str(v) self.textEdit.append(str(k)) self.textEdit.append(str(v)) self.textEdit.append("")
def show_new_dish_multi_popup(self): file_name = QFileDialog().getOpenFileName(None, "选择文件", "", self.tr("CSV文件 (*.csv)"))[0] self.new_dish_multi_popup.tableWidget.setRowCount(0) if file_name: with open(file_name, "r") as file: csv_reader = csv.reader(file, delimiter=",") for idx, row_data in enumerate(csv_reader): if len(row_data) == 2: name, price = row_data remark = "" elif len(row_data) == 3: name, price, remark = row_data else: QMessageBox.warning( self, "格式错误", self.tr('格式为"菜品 价格"或者"菜品 价格 备注"\n第{}行输入有误'.format( idx))) return self.new_dish_multi_popup.tableWidget.insertRow( self.new_dish_multi_popup.tableWidget.rowCount()) self.new_dish_multi_popup.tableWidget.setItem( idx, 0, QTableWidgetItem(name)) price_type = str_type(price) if price_type == str or (isinstance( price_type, (float, int)) and float(price) < 0): QMessageBox.warning( self, "格式错误", self.tr('第{}行价格输入有误'.format(idx + 1))) return self.new_dish_multi_popup.tableWidget.setItem( idx, 1, QTableWidgetItem("{:.2f}".format(float(price)))) self.new_dish_multi_popup.tableWidget.setItem( idx, 2, QTableWidgetItem(remark)) self.new_dish_multi_popup.show()
def saveFileDialog(self): fname = self.fileName() if fname is None: directory = "." else: directory = QFileInfo(fname).path() if util.isWindows(): # required for native looking file window fname = QFileDialog.getSaveFileName( self.win, "%s - Save As" % QApplication.applicationName(), directory, "%s (*.json)" % QApplication.applicationName()) if isinstance(fname, (list, tuple)): fname = fname[0] self.writeDocumentToFile(fname) else: # access through non-blocking callback fdialog = QFileDialog( self.win, "%s - Save As" % QApplication.applicationName(), directory, "%s (*.json)" % QApplication.applicationName()) fdialog.setAcceptMode(QFileDialog.AcceptSave) fdialog.setWindowFlags(Qt.Sheet) fdialog.setWindowModality(Qt.WindowModal) self.filesavedialog = fdialog self.filesavedialog.filesSelected.connect( self.saveFileDialogCallback) fdialog.open()
def read_file_dialog(neural_network, title="Open File", file_type="All Files"): """ Creates a visual interface that user can select a vide path Args: neural_network_name: string with neural network name title: string with the name of the file dialog box file_type: string kind of files that should be visible to user Returns: video_name: string with video name video_path: complete path of processed video video_out_path: complete path of output video file_out_path: complete path of text output file """ qfd = QFileDialog() if file_type == "All Files": type_filter = "All Files (*)" else: type_filter = file_type + " (*." + file_type + ")" video_path, _ = QFileDialog.getOpenFileName(qfd, title, "", type_filter) video_name = video_path.split("/")[-1].split(".")[0] video_format = video_path.split("/")[-1].split(".")[1] _, video_out_path, file_out_path = get_outputs_paths( video_name, video_format, neural_network) return video_name, video_path, video_out_path, file_out_path
def load_challenge_prompt(self, filename=None): """ Loads the challenge data from a json file. :filename: pathname to the challenge that was previously open. :returns: None """ if not filename: filename = QFileDialog().getOpenFileName( self, 'Load challenge list', self.exportPath, 'Anime Challenge List Object(*.aclo)')[0] if not filename: return # Open the file or show error in case of failure try: with open(filename, 'rb') as f: savedata = json.load(f) except FileNotFoundError: if filename == PREVIOUS_SESSION: return else: QMessageBox.warning(self, 'Warning', "Couldn't find file!") return self.load_challenge_data(savedata)
def show_open_dialog(self, directory=False): fip = FileIconProvider() self.dialog = QFileDialog(self) self.dialog.setIconProvider(fip) self.dialog.setDirectory(FileOperator.RECENT_PATH) self.dialog.setWindowTitle("Open Folder") if directory: self.dialog.setFileMode(QFileDialog.Directory) else: self.dialog.setFileMode(QFileDialog.ExistingFiles) self.dialog.setNameFilter( "All files (*);;Complex (*.complex);;Complex16 unsigned (*.complex16u);;Complex16 signed (*.complex16s);;Wave (*.wav);;Protocols (*.proto.xml *.proto);;" "Fuzzprofiles (*.fuzz.xml *.fuzz);;Plain bits (*.txt);;Tar Archives (*.tar *.tar.gz *.tar.bz2);;Zip Archives (*.zip)") self.dialog.setOptions(QFileDialog.DontResolveSymlinks) self.dialog.setViewMode(QFileDialog.Detail) if self.dialog.exec_(): try: file_names = self.dialog.selectedFiles() folders = [folder for folder in file_names if os.path.isdir(folder)] if len(folders) > 0: folder = folders[0] for f in self.signal_tab_controller.signal_frames: self.close_signal_frame(f) self.project_manager.set_project_folder(folder) else: self.setCursor(Qt.WaitCursor) file_names = FileOperator.uncompress_archives(file_names, QDir.tempPath()) self.add_files(file_names) self.unsetCursor() except Exception as e: Errors.generic_error(self.tr("Failed to open"), str(e), traceback.format_exc()) self.unsetCursor()