Funktioniert und funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Kann mir jemand sagen warum folgendes funktioniert:

Code: Alles auswählen

display(widgets.VBox(([i for i in cb_container])))
und auch folgendes:

Code: Alles auswählen

display(widgets.VBox((mhbox1,mhbox2)))
aber folgendes nicht:

Code: Alles auswählen

display(widgets.VBox((mhbox1,[i for i in cb_container],mhbox2)))
BlackJack

@Brando: Weil Du beim dritten Fall etwas übergibst was `VBox` nicht versteht, also keine Sequenz von Elementen die VBox erwartet.

Was sagt Dir denn die Fehlermeldung?

Und was soll ````? Kann es sein das Du da was abgeschrieben hast was Du nicht verstanden hast? Und wo hast Du das her, das ist nämlich nicht wirklich die Art und Weise wie man das schreiben würde. Die `list()`-Funktion wäre an der Stelle naheliegender.

Edit: Und wofür steht das `cb_` in `cb_container`? Nicht das das schon mal gefragt wurde. Willst Du das nicht beantworten oder kannst Du es nicht?
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Aber diese Sequenz ist doch im ersten Beispiel akzeptiert worden. Warum nicht im dritten Beispiel? cb steht für checkbox; es werden also im Container checkbxes dargestellt.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Brando: dann solltest Du Dir mal genau anschauen, wie das Argument von VBox im ersten Beispiel und im dritten Beispiel aussieht.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Die sind absolut identisch. Nur das die Sequenz mit noch zusätzlichen Elementen im dritten Beispiel angereichert ist, was aber funktionieren müsste, sonst würde ja Beispiel 2 auch nicht funktionieren.
BlackJack

@Brando: Das ist eben *nicht* der Fall. Schau Dir an wie viele Elemente es sind und welchen Typ die haben. Schau es Dir wirklich mal an und denke nicht nur das muss schon so passen.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Heißt das vielleicht, dass VBox nur Eingaben mit gleichem Typ akzeptiert, so dass es verschiedene Typen für i und bspw. mhbox2 gibt?
BlackJack

@Brando: `VBox` will eine Sequenz in der Objekte von einem Typ drinstehen mit dem es was anfangen kann. Und das machst Du im ersten Beispiel und im zweiten Beispiel, aber im dritten halt nicht. Die `i`-Werte sind vom richtigen Typ wenn das erste Beispiel funktioniert.

Wie viele Elemente hat denn Deiner Meinung nach das Tupel welches Du im dritten Beispiel übergibst? Prüf Deine Annahme mal nach in dem Du Dir die Länge ausgeben lässt. Und den Wert selbst vielleicht auch mal, dann siehst Du ja was daran deutlich anders ist als bei den anderen beiden Beispielen.
Antworten