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.
QLineEdit createn und wieder deleten, generische Programm..?
-
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.
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.
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
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
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.
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)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)- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Stimmt, der Gedanke macht sich breit.BlackJack hat geschrieben:Habe ja langsam den Verdacht wir füttern hier einen Troll.
Ich spare mir hier neue Beiträge solange die angebotenen Hinweise weiterhin im Nichts enden.
Beratungsresistenz +1
- machupicchu
- User
- Beiträge: 61
- Registriert: Samstag 1. Juni 2013, 14:04
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. Code: Alles auswählen
label_objects = [x for x in self.list_label]
self.line_edit_layout_datasource.addWidget(x)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.
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?
Code: Alles auswählen
label_objects = [x for x in self.list_label]Ein bisschen Eigeninitiative bitte, steht in diesem Thread, im zweiten Beitrag!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.
- machupicchu
- User
- Beiträge: 61
- Registriert: Samstag 1. Juni 2013, 14:04
1. Überschreibe die Objekte nicht - erledigtÜ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.
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_labelOk, 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]
Zuletzt geändert von machupicchu am Mittwoch 23. April 2014, 15:05, insgesamt 1-mal geändert.
http://www.lmgtfy.com/?q=widget+set+parent+noneWas und wie setze ich parent=none und wie löscht es dann meinen Objekt von meinem Layout.
- machupicchu
- User
- Beiträge: 61
- Registriert: Samstag 1. Juni 2013, 14:04
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]-
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.
Ja, aber wer nicht hören will...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.
http://pyside.github.io/docs/pyside/PyS ... .setParent
@machupicchu: Überleg doch bitte mal, was unter self.new_line_label und self.list_label[-1] zu finden ist!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
- User
- Beiträge: 61
- Registriert: Samstag 1. Juni 2013, 14:04
Naja, hatte es jetzt mal mit removeWidget versucht, aber das funktioniert auch noch nicht so ganz.
@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
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
