Der Autor hat meine Anpassungen um ein paar Änderungen erweitert und in sein Repo eingepflegt. Der QtWaitingSpinenr ist jetzt auch 3.10 kompatibel 🤓
1b268980-92ca-42a4-89a0-a6e4b7ab9378-grafik.png
So als Einsteiger, gibt es immer wieder Dinge, die einen fast verzweifeln lassen
Ich brauche ein Eingabeformular, wo der User verschiedene Eingaben machen kann. Eine Möglichkeit, wie man das machen kann ist folgendes.
class Loginpage(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Login')
self.resize(350,200)
layout = QGridLayout()
label1 = QLabel("Backup Name")
self.backup_name = QLineEdit()
layout.addWidget(label1, 0, 0)
layout.addWidget(self.backup_name, 0, 1)
label2 = QLabel("Repository")
self.repository = QLineEdit()
layout.addWidget(label2, 1, 0)
layout.addWidget(self.repository, 1, 1)
label3 = QLabel("Source")
self.source = QLineEdit()
layout.addWidget(label3, 2, 0)
layout.addWidget(self.source, 2, 1)
label4 = QLabel("Password")
self.password = QLineEdit()
layout.addWidget(label4, 3, 0)
layout.addWidget(self.password, 3, 1)
button_save = QPushButton('Save')
layout.addWidget(button_save, 5, 0, 2, 2)
button_save.clicked.connect(self.save)
button_cancel = QPushButton('Cancel')
layout.addWidget(button_cancel, 7, 0, 2, 2)
button_cancel.clicked.connect(lambda:self.close())
self.setLayout(layout)
def save(self):
#mainWin.listWidget.clear()
print("SAVE")
Der entsprechende Menüaufruf
#----Load Menu ----#
test = QAction(QIcon('icons/info-circle.svg'), 'TEST', self)
test.triggered.connect(self.test)
test.setShortcut('Ctrl+T')
loadMenu.addAction(test)
Die Funktion zum Aufrufen des Fensters
def test(self):
form.show()
Ich habe drei Ergebnisse gehabt, beim Ausprobieren. Hier jetzt noch eines, was mir aber nicht gefiel. Es macht vier mal einen Input Dialog auf und fragt die Eingaben ab.
def add_entry(self):
msg = QInputDialog(self)
a = msg.getText(self, "Backup Name","Backup Name:", QLineEdit.Normal , "")
b = msg.getText(self, "Repository","Repository:", QLineEdit.Normal, "")
c = msg.getText(self, "Source","Source:", QLineEdit.Normal, "")
d = msg.getText(self, "Password","Password:", QLineEdit.Password, "")
Wie gesagt, gefällt nicht.
Meine endgültige Lösung, zu mindestens im Moment , ist ein zweites Window. Das gefällt mir am Besten, komme ich zu mindestens im Moment einfach besser mit klar. Aber, eines der größten Probleme war für mich, wie aktualisiere ich die Liste im Hauptfenster!? Da habe ich doch etliche Stunden dran rum gefummelt....
Hier nur mal das Layout
#####################
# Layout
#####################
self.formGroupBox = QGroupBox("Form layout")
layout = QFormLayout()
layout.addRow(self.label_1)
layout.addRow(QLabel("Backup Name:"), self.input1)
layout.addRow(QLabel("Repository:"), self.button3)
layout.addRow(QLabel("Source:"), self.button4)
layout.addRow(QLabel("Password:"), self.input4)
layout.addRow(self.label_6)
layout.addRow(self.button2)
self.formGroupBox.setLayout(layout)
self.setLayout(layout)
Das mit dem SecondWindow ist aber was aufwändiger. Da mach ich dann mal einen eigenen Beitrag zu. Aktuell sieht das so aus.