Seite 2 von 2
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 13:58
von BlackJack
@machupicchu: Du bettelst hier jetzt echt so lange herum bis Dir jemand den fertigen Code liefert? Das was Du da zeigst ist schon wieder horrender Unsinn der nicht funtkioniert und *wieder* zeigt das Du die absoluten Grundlagen nicht verstanden hast. Habe ja langsam den Verdacht wir füttern hier einen Troll.
Wenn Du die Grundlagen lernst, dann löst das sehr wahrscheinlich Dein Problem, darum macht die Reihenfolge „Du löst Dein Problem und dann lernst Du die Grundlagen” keinen Sinn. Zumal ja auch gar nicht Du das Problem löst, sondern es von uns gelöst bekommen willst. Das Du die Lösung nicht verstehen wirst, ist ziemlich deutlich aus den Quelltextschnippseln die Du hier zeigst zu sehen.
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 14:18
von EmaNymton
Von mir wirst du keinen fertigen Quelltext kriegen bzw. erst, wenn du nachweislich die Grundlagen kannst.
Es ist auch wichtig mal die Dokumentation zu lesen und sich die Fehlermeldungen anzuschauen. Dein verändertes Beispiel
Code: Alles auswählen
label_objects = [x for x in self.list_label]
self.line_edit_layout_datasource.addWidget(label_objects)
ist mit Verlaub Blödsinn, da addWidget keine Liste übergeben bekommen will sondern das gerade angelegte QLabel und das sieht man auch in der Fehlermeldung, die da kommt
Code: Alles auswählen
TypeError: 'PySide.QtGui.QBoxLayout.addWidget' called with wrong argument types:
PySide.QtGui.QBoxLayout.addWidget(list)
Supported signatures:
PySide.QtGui.QBoxLayout.addWidget(PySide.QtGui.QWidget, int = 0, PySide.QtCore.Qt.Alignment = 0)
D.h. es erwartet
ein Widget, wie der Name ja auch impliziert. Das mit dem del funktioniert so nicht, Madmartigan hatte dir ja schon den Hinweis gegeben, wie man Widgets entfernt. Und wie man Elemente aus einer Liste entfernt, lernt man in Grundlagentutorials.
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 14:23
von Madmartigan
BlackJack hat geschrieben:Habe ja langsam den Verdacht wir füttern hier einen Troll.

Stimmt, der Gedanke macht sich breit.
Ich spare mir hier neue Beiträge solange die angebotenen Hinweise weiterhin im Nichts enden.
Beratungsresistenz +1 
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 14:35
von machupicchu
Code: Alles auswählen
Von mir wirst du keinen fertigen Quelltext kriegen bzw. erst, wenn du nachweislich die Grundlagen kannst.
Es ist auch wichtig mal die Dokumentation zu lesen und sich die Fehlermeldungen anzuschauen.
Ja sorry. Hatte statt label_objects, die variable x stehen gehabt. War mein Fehler.
Code: Alles auswählen
label_objects = [x for x in self.list_label]
self.line_edit_layout_datasource.addWidget(x)
So, wäre es richtig.
Ihr müsst mir kein fertiges Programm geben.
Jetzt habe ich die Objekte in meiner Liste. Kann auch die Objekte aus meiner Liste löschen. Ich will doch nur wissen wie ich jetzt die Objekte von meinem Layout löschen kann.
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 14:42
von EmaNymton
Die Zeile
ist redundant. Warum willst du aus deiner Liste self.list_label eine neue Liste label_objects machen, die du dazu noch nicht mal wieder brauchst?
Jetzt habe ich die Objekte in meiner Liste. Kann auch die Objekte aus meiner Liste löschen. Ich will doch nur wissen wie ich jetzt die Objekte von meinem Layout löschen kann.
Ein bisschen Eigeninitiative bitte, steht in diesem Thread, im zweiten Beitrag!
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 14:53
von machupicchu
Überschreibe die beiden Objekte nicht, sondern erzeuge neue. Beispielsweise in einer Liste. Wenn du dann bestimmte Objekte aus der GUI entfernen willst, setzt du ihren Parent auf None und löschst den Listeneintrag.
1. Überschreibe die Objekte nicht - erledigt
2. Erzeuge neue in einer Liste - erledigt
Code:
Code: Alles auswählen
list_label = []
def createNewTextEditApiKey(self):
if self.lineEdit_combobox_api.currentText() == 'New Data':
text, _ = QInputDialog.getText(self, 'Input Dialog',
'Enter data name:')
self.new_line_label = QLabel(text)
self.list_label.append(self.new_line_label)
#t = [x for x in self.list_label] # Ok brauche ich nicht
self.line_edit_layout_datasource.addWidget(new_line_label)
print self.list_label
3. Parent auf None und löschst den Listeneintrag - nicht erledigt
Ok, habe jetzt folgendes gemacht, aber da brauche ich noch einen Tipp.
Habe jetzt objekt auf none gesetzt und Listeneintrag gelöscht. Habe ich nicht verstanden mit dem Parent auf None setzen.
Code:
Code: Alles auswählen
def deleteData(self):
if self.lineEdit_combobox_api.currentText() == 'Delete Data':
self.new_line_label.setParent(None)
del self.list_label[-1]
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 15:00
von EmaNymton
Was und wie setze ich parent=none und wie löscht es dann meinen Objekt von meinem Layout.
http://www.lmgtfy.com/?q=widget+set+parent+none
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 15:26
von machupicchu
Code: Alles auswählen
def deleteData(self):
if self.lineEdit_combobox_api.currentText() == 'Delete Data':
self.new_line_label.setParent(None)
del self.list_label[-1]
Ok, jetzt löscht der mir wieder nur den letzten Objekt. :K
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 15:29
von BlackJack
@machupicchu: Ja, der Rechner macht das was man ihm sagt, und nicht das was man gerne hätte, aber nicht in der Lage ist ihm zu sagen. Ich bin mir übrigens auch nicht so wirklich sicher ob das eine gute Idee ist Objekte ohne Parent in einem Layout zu haben, oder ob das nicht am Ende auch wieder Probleme macht.
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 15:34
von EmaNymton
Ich bin mir übrigens auch nicht so wirklich sicher ob das eine gute Idee ist Objekte ohne Parent in einem Layout zu haben, oder ob das nicht am Ende auch wieder Probleme macht.
Ja, aber wer nicht hören will...
http://pyside.github.io/docs/pyside/PyS ... .setParent
Warning
It is very unlikely that you will ever need this function. If you have a widget that changes its content dynamically, it is far easier to use PySide.QtGui.QStackedWidget .
@machupicchu: Überleg doch bitte mal, was unter self.new_line_label und self.list_label[-1] zu finden ist!
Re: QLineEdit createn und wieder deleten, generische Program
Verfasst: Mittwoch 23. April 2014, 16:34
von machupicchu
Naja, hatte es jetzt mal mit removeWidget versucht, aber das funktioniert auch noch nicht so ganz.
Code: Alles auswählen
def deleteData(self):
if self.lineEdit_combobox_api.currentText() == 'Delete Data':
self.line_edit_layout_datasource.removeWidget(self.list_label[-1])
del self.list_label[-1]
@EmaNymton
list_label[-1] gibt mir den letzten objekteintrag in der liste zurück
new_line_label, habe ich verwendet, um die liste mit den objekten zu erzeugen.
:K