Seite 1 von 1

Braucht jede Zeile ein eigenes Frame

Verfasst: Montag 9. März 2020, 18:00
von Lunepi
Moin,

ich nutze den pack- manager und Frames.
Jetzt hatte ich mir in meinem jugendlichem Leichtsinn und als Anfänger gedacht, ich kann einfach mehrere Zeilen Label/Entry Kombis in ein Frame packen... wie mir scheint weit gefehlt oder gibt es eine Möglichkeit?

Code: Alles auswählen

schnipp
        frame1_r = Frame(right_frame)
        frame1_r.pack(fill=X)
        hostname_label = Label(frame1_r,text="Hostname:")
        hostname_label.pack(side=LEFT, padx=5, pady=5)

        info_hostname = Entry (frame1_r,textvariable=hostname  )
        info_hostname.pack(fill=X,padx=5,pady=5, expand=True)

        info_hostname.delete(0,END)
        info_hostname.insert(0,hostname)
        info_hostname.configure(state="readonly")

        username_label = Label(frame1_r, text="Username:")
        username_label.pack(side=LEFT, padx=5, pady=5)
        info_username = Entry (frame1_r,textvariable=hostname  )
        info_username.pack(fill=X,padx=5,pady=5, expand=True)

        phone_label = Label(frame1_r, text="Phone:")
        phone_label.pack(side=LEFT, padx=5, pady=5)
        info_phone = Entry(frame1_r, textvariable=hostname)
        info_phone.pack(fill=X, padx=5, pady=5, expand=True)
schnapp
Das Ergebnis sieht zwar Intressant aus, ist aber halt weit entfernt von dem was ich erreichen wollte.

Muss ich also für jede Zeile ein Frame erstellen?

Gruß Lunepi

Re: Braucht jede Zeile ein eigenes Frame

Verfasst: Dienstag 10. März 2020, 09:40
von __blackjack__
@Lunepi: Innerhalb eines Container-Widgets sollte man nur eine Seite bei `pack()` verwenden, sonst kann man interessante Ergebnisse bekommen, wie Du schon festgestellt hast. Für `Label` und dazugehörige Eingabelemente eignet sich ein `grid()` wohl besser.

Re: Braucht jede Zeile ein eigenes Frame

Verfasst: Dienstag 10. März 2020, 16:36
von Lunepi
Danke erstmal schon mal Danke für die Antwort.

Wann würden sich denn pack anbieten? Ich hatte mit grid angefangen war aber nicht so richtig zufrieden. Außerdem suchte ich, ne Möglichkeit die mir "LabelFrame" bietet, das hat nach meinem Verständnis dazugeführt dass ich "pack" zu nutzen habe.
Als ich aber versucht habe herauszufinden, was ist wann besser oder sinnvoller, hab ich keine eindeutige Antwort gefunden (oder nicht verstanden).
Das was ich verstanden habe, dass man tunlichst das mischen sein lassen sollte - just google ich noch mal und finde prompt die gegenteilige Antwort....
Hm das verwirrt irgendwie.
Ich werde noch mal versuchen 3 Frames zu erzeugen und meine Elemente darin mit grid zu ordnen ...

Re: Braucht jede Zeile ein eigenes Frame

Verfasst: Dienstag 10. März 2020, 16:58
von __blackjack__
@Lunepi: `grid()` wenn man etwas Tabellenförmig in Spalten und Zeilen in Zellen anordnen will, und `pack()` wenn man etwas neben- oder untereinander anordnen will. Für Labels links und Eingabeelemente rechts bietet sich ein `grid()` an, weil man sonst die Labels schlecht bis gar nicht rechtsbündig ausrichten kann, was man ja normalerweise haben will.

Re: Braucht jede Zeile ein eigenes Frame

Verfasst: Freitag 13. März 2020, 10:16
von Lunepi
Moin,

Danke, der Denkanstoss hat gereicht - der Knoten im Kopp is zu mindest erstmal gelöst. Und ja ich nutze jetzt grid.

Gruß Christian