def saveFileDialog(self): caption = '%s - Choose File' % __appname__ filters = 'Label files (*%s)' % LabelFile.suffix if self.output_dir: dlg = QtWidgets.QFileDialog(self, caption, self.output_dir, filters) else: dlg = QtWidgets.QFileDialog(self, caption, self.currentPath(), filters) dlg.setDefaultSuffix(LabelFile.suffix[1:]) dlg.setAcceptMode(QtWidgets.QFileDialog.AcceptSave) dlg.setOption(QtWidgets.QFileDialog.DontConfirmOverwrite, False) dlg.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, False) basename = osp.basename(osp.splitext(self.filename)[0]) if self.output_dir: default_labelfile_name = osp.join(self.output_dir, basename + LabelFile.suffix) else: default_labelfile_name = osp.join(self.currentPath(), basename + LabelFile.suffix) filename = dlg.getSaveFileName(self, 'Choose File', default_labelfile_name, 'Label files (*%s)' % LabelFile.suffix) filename = str(filename[0]) return filename
def selectFiles(filter='*.*', title='Select', defaultPath=None): filedialog = QtWidgets.QFileDialog() filedialog.setFileMode(QtWidgets.QFileDialog.FileMode.AnyFile) filedialog.setNameFilter(filter) if not defaultPath is None: defaultPath = Path(defaultPath) if defaultPath.is_file(): defaultDir = defaultPath.parent defaultFile = defaultPath.name elif defaultPath.is_dir(): defaultDir = defaultPath defaultFile = None else: defaultDir = None defaultFile = None if not defaultDir is None: filedialog.setDirectory(str(defaultDir)) if not defaultFile is None: filedialog.selectFile(str(defaultFile)) filedialog.setWindowTitle(title) #filedialog.setAcceptMode(QtWidgets.QFileDialog.AcceptOpen) for btn in filedialog.findChildren(QtWidgets.QPushButton): if btn.text() == "&Open": btn.setText("Select") filedialog.exec_() return filedialog.selectedFiles()
def save_recordongs(self): # set the directory self.dir = QtW.QFileDialog(self) self.dir.setFileMode(QtW.QFileDialog.DirectoryOnly) self.save_dir = QtW.QFileDialog.getExistingDirectory(self.dir) self.dir_rec_lineEdit.setText(self.save_dir) self.parent_path = Path(self.save_dir)
def saveLabel(self, saveAs=False, savePath=None): if not self.controller: return if self.controller.image is None: return self.completeLastMask() if not savePath: # 参数没传存到哪 if not saveAs and self.outputDir is not None: # 指定了标签文件夹,而且不是另存为 savePath = osp.join( self.outputDir, osp.basename(self.imagePath).split(".")[0] + ".png") else: filters = self.tr("Label files (*.png)") dlg = QtWidgets.QFileDialog(self, "保存标签文件路径", osp.dirname(self.imagePath), filters) dlg.setDefaultSuffix("png") dlg.setAcceptMode(QtWidgets.QFileDialog.AcceptSave) dlg.setOption(QtWidgets.QFileDialog.DontConfirmOverwrite, False) dlg.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, False) savePath, _ = dlg.getSaveFileName( self, self.tr("选择标签文件保存路径"), osp.basename(self.imagePath).split(".")[0] + ".png", ) if (savePath is None or len(savePath) == 0 or not osp.exists(osp.dirname(savePath))): return cv2.imwrite(savePath, self.controller.result_mask) self.statusbar.showMessage(f"标签成功保存至 {savePath}")
def save_svg(string, parent=None): """ Prompts the user to save an SVG document to disk. Parameters ---------- string : basestring A Python string containing a SVG document. parent : QWidget, optional The parent to use for the file dialog. Returns ------- The name of the file to which the document was saved, or None if the save was cancelled. """ if isinstance(string, unicode_type): string = string.encode('utf-8') dialog = QtWidgets.QFileDialog(parent, 'Save SVG Document') dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptSave) dialog.setDefaultSuffix('svg') dialog.setNameFilter('SVG document (*.svg)') if dialog.exec_(): filename = dialog.selectedFiles()[0] f = open(filename, 'wb') try: f.write(string) finally: f.close() return filename return None
def getFileSelector(parent, caption, dfilter, filepath='', settings=None): """Raise a customised file selector dialog. :Parameters: - `parent`: the parent widget - `caption`: the dialog caption - `dfilter`: filters used to display files and folders - `filepath`: the filepath initially selected - `settings`: dictionary with keys `label` (Accept button text), `history` (file selector history) , `accept_mode` and `file_mode` """ file_selector = QtWidgets.QFileDialog(parent, caption, '', dfilter) # Misc. setup file_selector.setDirectory(settings['history'][-1]) file_selector.setAcceptMode(settings['accept_mode']) if settings['accept_mode'] == QtWidgets.QFileDialog.AcceptSave: file_selector.setOption(QFileDialog.DontConfirmOverwrite) file_selector.setFileMode(settings['file_mode']) file_selector.setHistory(settings['history']) if filepath: file_selector.selectFile(filepath) if settings['label'] != '': file_selector.setLabelText( QtWidgets.QFileDialog.Accept, settings['label']) # Uncomment next line if you want native dialogs. Removing the comment # comes at the price of an annoying KDE warning in your console. See the # thread "A dire warning message" (July, 2011) in the pyQt4 mailing list # for details. # file_selector.setOption(QtWidgets.QFileDialog.DontUseNativeDialog) return file_selector
def set_multi_d_acq_dir(self): # set the directory self.dir = QtW.QFileDialog(self) self.dir.setFileMode(QtW.QFileDialog.DirectoryOnly) self.save_dir = QtW.QFileDialog.getExistingDirectory(self.dir) self.dir_lineEdit.setText(self.save_dir) self.parent_path = Path(self.save_dir)
def open_directory(self): dialog = QtWidgets.QFileDialog(self) dialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) dialog.setViewMode(QtWidgets.QFileDialog.List) dialog.setOption(QtWidgets.QFileDialog.ShowDirsOnly, True) if dialog.exec_(): directory = str(dialog.selectedFiles()[0]) self.load_files(dicom_files_in_dir(directory))
def select_directory(self, index=0): d = QtWidgets.QFileDialog(caption='Select data directory') d.setFileMode(QFileDialog.Directory) if d.exec(): datadir = d.selectedFiles()[0] self.set_data_directory(datadir, index) print('update logs') self.update_logs()
def file_dialog(self): # TODO make this emit a signal dialog = QtWidgets.QFileDialog() dialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) dialog.setDirectory(os.path.split(self.folder)[0]) if dialog.exec_(): dirname = dialog.selectedFiles() self.line_edit_folder.setText(dirname[0]) self.folder = dirname[0] self.search_vectors()
def mousePressEvent(self, e): self.__logger.info("mousePressEvent %s", e) dlg = QtWidgets.QFileDialog() if self.__mode is not None: dlg.setFileMode(QtWidgets.QFileDialog.Directory) if dlg.exec(): text = dlg.selectedFiles()[0] self.setText(text)
def selectDirectory(self): from qtpy.QtWidgets import QFileDialog d = QtWidgets.QFileDialog(caption='Select data directory') d.setFileMode(QFileDialog.Directory) if d.exec(): datadir = d.selectedFiles()[0] self.setDatadir(datadir) print('update logs') self.updateLogs()
def file_dialog(self, button_name): dialog = QtWidgets.QFileDialog() dialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) dialog.setDirectory(self.default_folder) if dialog.exec_(): dirname = dialog.selectedFiles() text_field = self.objects[button_name[:-7]]["object"] text_field.setText(dirname[0]) self.default_folder = os.path.split(dirname[0])[0] self.update_dirs()
def get_filedialog(parent=None): try: # mainwin = QtWidgets.qApp.findChild( # QtWidgets.QMainWindow, 'gsdview-mainwin') mainwin = get_mainwin() dialog = mainwin.filedialog except AttributeError: _log.debug('unable to find the GDSView main window widget') dialog = QtWidgets.QFileDialog(parent) return dialog
def pick_directory(caption): dialog = QtWidgets.QFileDialog(caption=caption) dialog.setFileMode(QtWidgets.QFileDialog.Directory) directory = dialog.exec_() if directory == QtWidgets.QDialog.Rejected: return [] directory = dialog.selectedFiles() return directory[0]
def file_dialog(self): # self.dialog = FileDialog_advanced() # self.dialog.files_opened.connect(partial(self.find_files, source=self._fromFileDialog)) dialog = QtWidgets.QFileDialog() dialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) dialog.setDirectory(os.path.split(self.folder)[0]) if dialog.exec_(): dirname = dialog.selectedFiles() print(dirname) self.select_folder = dirname[0] self.find_files(source=self._fromFileDialog)
def file_dialog(self): dialog = QtWidgets.QFileDialog() dialog.setFileMode(self.type) dialog.setDirectory(os.path.split(self.files)[0]) if dialog.exec_(): if self.type == QtWidgets.QFileDialog.ExistingFile: self.files = dialog.selectedFiles()[0] else: self.files = dialog.selectedFiles() self.line_edit_folder.setText(str(self.files)) # This wrong? self.fileSeleted.emit(True)
def _save_image(self, name, format='PNG'): """ Shows a save dialog for the ImageResource with 'name'. """ dialog = QtWidgets.QFileDialog(self._control, 'Save Image') dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptSave) dialog.setDefaultSuffix(format.lower()) dialog.setNameFilter('%s file (*.%s)' % (format, format.lower())) if dialog.exec_(): filename = dialog.selectedFiles()[0] image = self._get_image(name) image.save(filename, format)
def select_work_path(self): dirname = Path(self.work_dir.text()) if not dirname.exists(): dirname = Path() dialog = QtWidgets.QFileDialog() dialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) dialog.setOption(QtWidgets.QFileDialog.ShowDirsOnly) work_path = dialog.getExistingDirectory(directory=str(dirname), caption="Work directory") if not work_path: return self.work_dir.setText(work_path)
def __init__(self, parent=None): self._fd = QtWidgets.QFileDialog(parent) from glue.config import data_factory self.filters = [(f, self._filter(f)) for f in data_factory.members if not f.deprecated] self.setNameFilter() self._fd.setFileMode(QtWidgets.QFileDialog.ExistingFiles) try: self._fd.setOption( QtWidgets.QFileDialog.Option.HideNameFilterDetails, True) except AttributeError: # HideNameFilterDetails not present pass
def save_image(self): duplicate = self.duplicateSpinBox.value() clock = datetime.now().strftime('%y%m%d_%H%M%S') img_type = self.image_typeComboBox.currentText() if duplicate > 0: # get save direction file_dialog = QtWidgets.QFileDialog(self, "Select saving directory: ") file_dialog.setOption(QtWidgets.QFileDialog.DontUseNativeDialog) file_dialog.setAcceptMode(1) file_dialog.setFileMode(2) if file_dialog.exec(): file_path = file_dialog.selectedFiles()[0] for i in range(duplicate): # get image name img_name = file_path + '/' + clock + '_' + str(i + 1) + '.png' if img_type == 'Binary Image (Particles only)': if i != 0: del (self.database['binary_image']) try: # save particle binary image imgio.imsave(img_name, self.database['binary_image']['data']) except: # generate new image file self.generate_images() imgio.imsave(img_name, self.database['binary_image']['data']) # remove saved data elif img_type == 'Particle+Noise': if i != 0: del (self.database['particle_bkg_image']) try: # save particle with background noise imgio.imsave( img_name, self.database['particle_bkg_image']['data']) except: # generate new image file self.generate_images() imgio.imsave( img_name, self.database['particle_bkg_image']['data']) self.change_image()
def pick_directory(caption): """ Pick the directory to load SunPy map files from. """ dialog = QtWidgets.QFileDialog(caption=caption) dialog.setFileMode(QtWidgets.QFileDialog.Directory) directory = dialog.exec_() if directory == QtWidgets.QDialog.Rejected: return [] directory = dialog.selectedFiles() return directory[0]
def saveLabelList(self): if len(self.labelList) == 0: self.warn("没有需要保存的标签", "请先添加标签之后再进行保存") return filters = self.tr("标签配置文件 (*.txt)") dlg = QtWidgets.QFileDialog(self, "保存标签配置文件", ".", filters) dlg.setDefaultSuffix("txt") dlg.setAcceptMode(QtWidgets.QFileDialog.AcceptSave) dlg.setOption(QtWidgets.QFileDialog.DontConfirmOverwrite, False) dlg.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, False) savePath, _ = dlg.getSaveFileName( self, self.tr("%s - 选择保存标签配置文件路径") % __APPNAME__, ".", filters) self.labelList.saveLabel(savePath) self.settings.setValue("label_list_file", savePath)
def export_image(self): # file_name, _ = QtWidgets.QFileDialog.getSaveFileName( # self, # "Save file", # os.path.expanduser("~/dicom-export.png"), # "PNG images (*.png)" # ) # if file_name: # self.pix_label._image.save(file_name) # box = QtWidgets.QMessageBox() # box.setWindowTitle("Exporting") # box.setWindowIcon(QtGui.QIcon('icon.png')) # box.setIcon(QtWidgets.QMessageBox.Warning) # box.setText("Processing...please wait") # msg = box.exec_() dialog = QtWidgets.QFileDialog(self) dialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) dialog.setViewMode(QtWidgets.QFileDialog.List) dialog.setOption(QtWidgets.QFileDialog.ShowDirsOnly, True) if dialog.exec_(): directory = str(dialog.selectedFiles()[0]) # Loading dialog. dlg = QtWidgets.QDialog(None, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint) dlg.setWindowTitle("Working...") dlg.setWindowIcon(QtGui.QIcon('icon.png')) dlg.resize(200, 150) dlg.show() # start_time = time.perf_counter() dicom_to_bmp(directory, self.DESIRED_SERIES) grid_images_to_folders(self.HEIGHT_IN_PIXELS, self.WIDTH_IN_PIXELS, self.IMAGE_ROWS, self.IMAGE_COLS) # end_time = time.perf_counter() # print("Exporting performance (QMessageBox vs. QDialog): ", end_time - start_time) dlg.close() box = QtWidgets.QMessageBox() box.setWindowTitle("Success") box.setWindowIcon(QtGui.QIcon('icon.png')) box.setIcon(QtWidgets.QMessageBox.Information) box.setText("Export complete!") msg = box.exec_() # No exceptions to this point == successful export. self.exportRan = True
def saveFileDialog(self): caption = '%s - Choose File' % __appname__ filters = 'Label files (*%s)' % LabelFile.suffix dlg = QtWidgets.QFileDialog(self, caption, self.currentPath()+"/../json", filters) dlg.setDefaultSuffix(LabelFile.suffix[1:]) dlg.setAcceptMode(QtWidgets.QFileDialog.AcceptSave) dlg.setOption(QtWidgets.QFileDialog.DontConfirmOverwrite, False) dlg.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, False) basename =os.path.basename(os.path.splitext(self.filename)[0]) default_labelfile_name = os.path.join(self.currentPath()+"/../json", basename + LabelFile.suffix) filename = dlg.getSaveFileName( self, 'Choose File', default_labelfile_name, 'Label files (*%s)' % LabelFile.suffix) if QT5: filename, _ = filename filename = str(filename) return filename
def loadimage(self): """ Select an image from disk. """ fd = qt.QFileDialog() filename = fd.getOpenFileName(self, 'Select device image', os.getcwd(), "Image files(*.jpg *.png *.jpeg)") self.filename = filename[0] self.pixmap = gui.QPixmap(filename[0]) width = self.pixmap.width() height = self.pixmap.height() self.imageCanvas.setPixmap(self.pixmap) # fix the image scale, so that the pixel values of the mouse are # unambiguous self.imageCanvas.setMaximumWidth(width) self.imageCanvas.setMaximumHeight(height)
def open_directory(self): dialog = QtWidgets.QFileDialog(self) dialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) dialog.setViewMode(QtWidgets.QFileDialog.List) dialog.setOption(QtWidgets.QFileDialog.ShowDirsOnly, True) if dialog.exec_(): directory = str(dialog.selectedFiles()[0]) # start_time = time.perf_counter() self.load_files(dicom_files_in_dir(directory)) # end_time = time.perf_counter() # print("Loading performance (individual DICOM folders vs. parent folder): ", end_time - start_time) # Error handling for incorrect DICOM directories. if self.file_list.count() < 1: box = QtWidgets.QMessageBox() box.setWindowTitle("Error") box.setWindowIcon(QtGui.QIcon('icon.png')) box.setIcon(QtWidgets.QMessageBox.Critical) box.setText("Invalid DICOM directory!") msg = box.exec_()
def openLoadDialog(self): # opening last directory von sttings self._open_dir = self.settings.value("_open_dir") if self._open_dir is None: self._open_dir = os.getcwd() dialog = QtWidgets.QFileDialog() dialog.setDirectory(self._open_dir) filename = dialog.getOpenFileName(self, "Open Positions", "", "Position Files (*.tif)") if isinstance(filename, tuple): filename = str(filename[0]) else: filename = str(filename) if os.path.exists(filename): # noting directory to q settings self._open_dir = os.path.split(filename)[0] self.settings.setValue("_open_dir", self._open_dir) self.settings.sync() self.loadFile(filename)
def __processClientDirectory(self, title, finishCallback, preCallback, p4command, *p4args): fileDialog = QtWidgets.QFileDialog(interop.main_parent_window(), title, str(self.p4.cwd)) def onEnter(*args): if not Utils.isPathInClientRoot(self.p4, args[0]): fileDialog.setDirectory(self.p4.cwd) def onComplete(*args): selectedFiles = [] error = None if preCallback: preCallback(fileDialog.selectedFiles()) # Only add files if we didn't cancel if args[0] == 1: for file in fileDialog.selectedFiles(): if Utils.isPathInClientRoot(self.p4, file): try: Utils.p4Logger().info(p4command(p4args, file)) selectedFiles.append(file) except P4Exception as e: Utils.p4Logger().warning(e) error = e else: Utils.p4Logger().warning( "{0} is not in client root.".format(file)) fileDialog.deleteLater() if finishCallback: finishCallback(selectedFiles, error) fileDialog.setFileMode(QtWidgets.QFileDialog.DirectoryOnly) fileDialog.directoryEntered.connect(onEnter) fileDialog.finished.connect(onComplete) fileDialog.show()
def open_file(self): """Open a new image file from a file explorer""" file_name = QtWidgets.QFileDialog() file_name.setFileMode(QtWidgets.QFileDialog.ExistingFiles) new_files = file_name.getOpenFileNames(self)[0] if new_files: if self.image_set.current_image: self.save_parameters() first_new_image = len(self.image_set.images) self.image_set.append(new_files, first_new_image) # If there are no new images, don't continue if first_new_image == len(self.image_set.images): warnings.warn("The image(s) chosen are not PDS compatible") return self.next_image_btn.setEnabled( self.image_set.next_prev_enabled) self.previous_image_btn.setEnabled( self.image_set.next_prev_enabled) self._display_image() else: # integrate with logger print("No file selected!") return