from PySide6.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QLabel, QApplication, QPushButton, QLineEdit from PySide6.QtCore import QSize, Signal, Slot class ConfigRepoGUI(QWidget): valider = Signal() def __init__(self, passphrase="", remote_path="/usr/local/bin/borg", depot=""): super().__init__() layout = QVBoxLayout() layout.addWidget(QLabel("Configuration")) self.repo = ConfigElementGUI("Depot", depot) self.passphrase = ConfigElementGUI("Borg_passphrase", passphrase) self.remote_path = ConfigElementGUI("--remote_path", remote_path) layout.addWidget(self.repo) layout.addWidget(self.passphrase) layout.addWidget(self.remote_path) self.valider_button = QPushButton("Valider") layout.addWidget(self.valider_button) self.valider_button.clicked.connect(self.envoyer_valider) self.setLayout(layout) def get_repo(self)->str: return self.repo.field.text() def get_passphrase(self)->str: return self.passphrase.field.text() def get_remote_path(self)->str: return self.remote_path.field.text() def task_ended(self): self.valider_button.setEnabled(True) @Slot() def envoyer_valider(self): print("envoyer_valider") self.valider.emit() self.valider_button.setEnabled(False) class ConfigElementGUI(QWidget): def __init__(self, nom:str, valeur_par_défaut:str=""): super().__init__() layout = QHBoxLayout() layout.addWidget(QLabel(nom)) self.field = QLineEdit(valeur_par_défaut) layout.addWidget(self.field) self.setLayout(layout) def sizeHint(self): return QSize(600, 50) if __name__ == "__main__": import sys app = QApplication([]) widget = ConfigRepoGUI() widget.show() sys.exit(app.exec())