benötige Eure Hilfe zu columnconfigure und columnspan.
Ich habe dazu einen Testcode, den ich am Ende bereitstellen werde.
In dem Beispiel hat die erste bis dritte Reihe 4 Spalten, die Breite der Widgets ist 10.
Die vierte bis fünfte Reihe hat 6 Spalten, die Breite der Widgets ist 10.
Ab der sechsten Reihe sind es 8 Spalten und die Breite der Widgets ist 40.
Die Widgets sollen von links nach rechts aneinander liegen.
Ich habe schon einiges ausprobiert, komme aber nicht auf das gewünschte Ergebnis.
Hoffe, Ihr könnt mir dabei helfen!
Hier der Beispielcode:
Code: Alles auswählen
import tkinter as tk
class AutoScrollbar(tk.Scrollbar):
def set(self, low, high):
if float(low) <= 0.0 and float(high) >= 1.0:
self.tk.call("grid", "remove", self)
else:
self.grid()
tk.Scrollbar.set(self, low, high)
def pack(self, **kw):
raise (TclError,"pack cannot be used with \
this widget")
def place(self, **kw):
raise (TclError, "place cannot be used with \
this widget")
root = tk.Tk()
yscrollbar = AutoScrollbar(root)
yscrollbar.grid(row=0, column=1, sticky=tk.NS)
xscrollbar = AutoScrollbar(root, orient=tk.HORIZONTAL)
xscrollbar.grid(row=1, column=0, sticky=tk.EW)
canvas = tk.Canvas(root, yscrollcommand=yscrollbar.set,
xscrollcommand=xscrollbar.set)
canvas.grid(row=0, column=0, sticky=tk.NSEW)
yscrollbar.config(command=canvas.yview)
xscrollbar.config(command=canvas.xview)
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
frame = tk.Frame(canvas)
frame.rowconfigure(1, weight=1)
frame.columnconfigure(1, weight=1)
rows = 20
for i in range(0,rows):
frame.columnconfigure(i, weight=1)
for j in range(0,9):
button = tk.Button(frame, padx=8, pady=8, text="[%d,%d]" % (i,j))
if i < 3:
frame.columnconfigure(i, weight=3)
button.grid(row=i, columnspan=3, sticky=tk.W)
button.config(width=15)
if j == 3:
break
elif i >= 3 and i < 5:
frame.columnconfigure(i, weight=5)
button.grid(row=i, columnspan=5, sticky=tk.W)
button.config(width=10)
if j == 5:
break
else:
button.grid(row=i, column=j, sticky=tk.W)
button.config(width=40)
canvas.create_window(0, 0, anchor=tk.NW, window=frame)
frame.update_idletasks()
canvas.config(scrollregion=canvas.bbox("all"))
root.mainloop()