ich habe folgendes Problem:
Mein Testprogramm beinhaltet ein Canvas mit linkseitiger Scrollbar.
Wenn ich das Fenster mit der Maus verkleinere, geht die Scrollbar quasi nicht mit und verschwindet dadurch.
Ich denke, dass der Canvas nicht an das Hauptfenster gebunden ist. Was ist an dem Code falsch?
Hier der Code:
Code: Alles auswählen
import tkinter
class MyView(tkinter.Frame):
def __init__(self, master=None, data=None):
super().__init__(master)
self.grid(sticky="nsew")
##################################################################################
self.canvas = tkinter.Canvas(self, width=1000, height=550)
self.scrollbar = tkinter.Scrollbar(self, orient="vertical", command=self.canvas.yview)
self.scrollable_frame = tkinter.Frame(self.canvas)
self.scrollable_frame.bind(
"<Configure>",
lambda e: self.canvas.configure(
scrollregion=self.canvas.bbox("all")
)
)
self.canvas.create_window((0, 0), window=self.scrollable_frame, anchor="nw")
self.canvas.configure(yscrollcommand=self.scrollbar.set)
self.canvas.grid(row=0, column=0, sticky="nsew")
self.scrollbar.grid(row=0, column=1, sticky="ns")
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
# Beispiel für die Verwendung der Klasse
if __name__ == "__main__":
root = tkinter.Tk()
root.title("Datenkacheln")
screenHeight = root.winfo_screenheight()
screenWidth = root.winfo_screenwidth()
sizeX = 1020
sizeY = 580
posX = (screenWidth // 2) - (sizeX // 2)
posY = (screenHeight // 2) - (sizeY // 2)
root.geometry(f"{sizeX}x{sizeY}+{posX}+{posY}")
app = MyView(master=root)
root.mainloop()