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
Button über mehrere Zeilen
@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.
Zeig doch mal ein minimales, aber lauffähiges Beispiel welches das Problem zeigt.
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()
@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()