Seite 1 von 1

Button über mehrere Zeilen

Verfasst: Donnerstag 2. Januar 2014, 15:54
von loganX
Hallo,

ich verzweifel grad an einer kleinen Banalität, und zwar möchte ich einen Button in meiner GUI (platziert mit .grid) über mehrere Zeilen und Spalten im Raster haben. Mit columnspan zieht sich der Button jetzt über mehrere Spalten, jedoch funktioniert das ganze nicht mit rowspan. Das Attribut "sticky="wens"" hat mir leider nicht weiter geholfen. Warum ist das so?

Danke im Voraus

Re: Button über mehrere Zeilen

Verfasst: Donnerstag 2. Januar 2014, 16:29
von BlackJack
@loganX: Woher weisst Du denn das es nicht über mehrere Zeilen im `grid()` geht? Hast Du denn in diesen `grid()`-Zeilen neben der Schaltfläche noch irgendwelche anderen Widgets platziert und die werden jetzt nicht richtig angezeigt? Denn ohne andere Widgets in den Zeilen macht ein `rowspan` keinen Sinn.

Zeig doch mal ein minimales, aber lauffähiges Beispiel welches das Problem zeigt.

Re: Button über mehrere Zeilen

Verfasst: Donnerstag 2. Januar 2014, 16:41
von loganX

Code: Alles auswählen

from tkinter import *

Hauptfenster = Tk()

Label(text="Zeile 1").grid(row=0,column=0,columnspan=4)
Label(text="Zeile 2").grid(row=1,column=0,columnspan=2)
Label(text="Zeile 3").grid(row=2,column=0,columnspan=2)
Label(text="Zeile 4").grid(row=3,column=0,columnspan=2)
Button(text="Button").grid(row=1,column=2,rowspan=3,columnspan=2)

Hauptfenster.mainloop()
Das wäre so ein kleines Beispiel, der Button müsste doch eigentlich über Zeile 2,3,4 gehen, oder? Zumindest hätte ich das so gern, nur wird er einfach in der Mitte platziert

Re: Button über mehrere Zeilen

Verfasst: Donnerstag 2. Januar 2014, 17:12
von BlackJack
@loganX: Da fehlt halt noch das `sticky`-Argument. Und auch wenn das hier wahrscheinlich noch überall problemlos funktionieren wird: als erstes Argument bei Widgets muss man immer das Elternwidget angeben. Sonst gibt es irgendwann Chaos in der Anzeige.

Code: Alles auswählen

try:
    import Tkinter as tk
except ImportError:
    import tkinter as tk


def main():
    hauptfenster = tk.Tk()
    tk.Label(hauptfenster, text='Zeile 1').grid(row=0, column=0, columnspan=4)
    tk.Label(hauptfenster, text='Zeile 2').grid(row=1, column=0, columnspan=2)
    tk.Label(hauptfenster, text='Zeile 3').grid(row=2, column=0, columnspan=2)
    tk.Label(hauptfenster, text='Zeile 4').grid(row=3, column=0, columnspan=2)
    tk.Button(hauptfenster, text='Button').grid(
        row=1, column=2, rowspan=3, columnspan=2, sticky='NWSE'
    )
    hauptfenster.mainloop()


if __name__ == '__main__':
    main()

Re: Button über mehrere Zeilen

Verfasst: Donnerstag 2. Januar 2014, 19:07
von loganX
funktioniert das bei dir, dass er den Button jetzt auf mehreren Zeilen platziert, bei mir nämlich immernoch nicht :?

Re: Button über mehrere Zeilen

Verfasst: Donnerstag 2. Januar 2014, 20:11
von loganX
das liegt wohl am Mac. Bei einem Kommilitonen funktioniert es wie geplant.