Widget ausrichten

Fragen zu Tkinter.
Antworten
Tengel
User
Beiträge: 210
Registriert: Sonntag 17. März 2013, 12:29

Ich bräuchte mal einen Denkanstoß zu
http://img4web.com/view/D4TGRX

Was muss ich machen das die Reihe mit "AJ", "A10S"...... nach 4 Radiobuttons in die nächste Zeile springt?

Ich habs versucht mit
einem width für das Frame was ignoriert wird
mit einer if Bedingung die beim 3ten Schleifendurchlauf einmal mit side="bottom" das Widget pack, was zu einer sehr komischen Anordnung führt

Ich könnte natürlich die Liste in 3 aufteilen, aber das kann doch nicht im Sinne des Erfinders sein?

Gruß
Tengel
BlackJack

@Tengel: Bei `side` sollte man in einem Widget bei einem Wert bleiben. Sonst kann es wie Du ja selbst festgestellt hast zu komischen Layouts führen.

Die Lösung ist ein `grid()`-Layout in einem eigenen `Frame`. Die Positionen (Zeile/Spalte) kann man mit der `divmod()`-Funktion berechnen. Also ungefähr so:

Code: Alles auswählen

    frame = tk.Frame(parent)
    for i, item in enumerate(items):
        radio_button = tk.Radiobutton(frame, text=item)
        row, column = divmod(i, 4)
        radio_button.grid(row=row, column=column)
    frame.pack()
Antworten