class Path_selector(QWidget): def __init__(self, type): super().__init__() if not (type == 'file' or type == 'folder'): raise Exception( "invalid type when initializing Path_selector class instance") self.type = type self.label = QLabel(f"Select a {type}", self) self.input = QLineEdit(self) self.button = QPushButton(f"Select {type}", self) self.button.clicked.connect(self.navigate_for_path) self.layout = QHBoxLayout(self) self.layout.addWidget(self.label) self.layout.addWidget(self.input) self.layout.addWidget(self.button) self.resize(500, 200) def navigate_for_path(self): self.dialog = QFileDialog(self) path = "" if self.type == 'file': self.dialog.setFileMode(QFileDialog.ExistingFile) self.dialog.setNameFilter("Text files (*.txt)") self.dialog.exec() path = self.dialog.selectedFiles()[0] #path = self.dialog.getOpenFileName(self)[0] elif self.type == 'folder': path = self.dialog.getExistingDirectory(self) print(path) self.input.setText(path) return def get_path(self): return self.input.text()
def Sl_show_file_dialog(self): dialog = QFileDialog() dialog.setFileMode(QFileDialog.Directory) dialog.setViewMode(QFileDialog.Detail) dialog.setOption(QFileDialog.ShowDirsOnly) dialog.setOption(QFileDialog.DontResolveSymlinks) if dialog.exec(): # Serve per fare in modo che il test abbia una stringa da usare sync_path = ["test"] if self.debug else dialog.selectedFiles() if len(sync_path) == 1: self.Sg_view_changed.emit(sync_path[0])
env_settings = QSettings() # env_settings.setValue("sync_path", None) # env_settings.setValue("Credentials/user", None) # env_settings.setValue("Credentials/password", None) # Controlliamo se l'utente ha già settato il PATH della cartella check_path = env_settings.value("sync_path") if not check_path or not os.path.isdir(check_path): dialog = QFileDialog() dialog.setFileMode(QFileDialog.Directory) dialog.setViewMode(QFileDialog.Detail) # provare anche .List dialog.setOption(QFileDialog.ShowDirsOnly) dialog.setOption(QFileDialog.DontResolveSymlinks) # L'utente non ha selezionato la cartella if not dialog.exec(): env_settings.setValue("sync_path", None) app.quit() sync_path = dialog.selectedFiles() if len(sync_path) == 1: env_settings.setValue("sync_path", sync_path[0]) env_settings.sync() print("Nuova directory: " + env_settings.value("sync_path")) model = MainModel() controller = MainController(app, model) login_controller = LoginController(model, controller) sys.exit(app.exec())