Ich habe eine Anzahl von Referenzen sowohl auf Stackoverflow und anderen Orten (Effbot, etc.) angeschaut. Ich war in der Lage, den Rahmen auf einer Leinwand mit den Scrollbars zu bekommen, aber es kann nicht zum Scrollen kommen. Tkinter: Bildlaufleisten erscheinen aber funktionieren nicht
In diesem Beispiel möchte ich den Rahmen mit den Entry-Widgets scrollen. Ich habe eine andere (reale) Anwendung, die eine große Anzahl von Eintritts-Widgets hat, die dazu führen, dass der Rahmen die Höhe seines Elternteils überschreitet.
# **** SCROLL BAR TEST *****
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Scrollbar Test")
root.geometry("800x400")
root.configure(background="light gray")
frame = Frame(root, height=300, width = 200, borderwidth=2, relief=SUNKEN, background="light gray")
frame.grid(column=0, row=0, sticky=W)
yscrollbar = Scrollbar(frame)
yscrollbar.grid(column=1, row=2, sticky=N+S)
canvas = Canvas(frame, bd=0, scrollregion=(0,0,800, 600), yscrollcommand=yscrollbar.set)
canvas.grid(column=0, row=0, sticky=N+S+E+W)
yscrollbar.config(command=canvas.yview)
frame = Frame(canvas, height=300, width = 200, borderwidth=2, relief=SUNKEN, background="light gray")
frame.grid(column=0, row=0, sticky=W)
label = ttk.Label(frame, text="This is a label")
label.grid(column=1, row=0, sticky=W)
text = ttk.Entry(frame, textvariable="text")
text.grid(column=2, row=0, sticky=W)
label1= ttk.Label(frame, text="This is a label")
label1.grid(column=1, row=1, sticky=W)
text1 = ttk.Entry(frame, textvariable="text")
text1.grid(column=2, row=1, sticky=W)
label2 = ttk.Label(frame, text="This is a label")
label2.grid(column=1, row=2, sticky=W)
text2 = ttk.Entry(frame, textvariable="text")
text2.grid(column=2, row=2, sticky=W)
label3 = ttk.Label(frame, text="This is a label")
label3.grid(column=1, row=3, sticky=W)
text3 = ttk.Entry(frame, textvariable="text")
text3.grid(column=2, row=3, sticky=W)
label4 = ttk.Label(frame, text="This is a label")
label4.grid(column=1, row=4, sticky=W)
text4 = ttk.Entry(frame, textvariable="text")
text4.grid(column=2, row=4, sticky=W)
label5 = ttk.Label(frame, text="This is a label")
label5.grid(column=1, row=5, sticky=W)
text5 = ttk.Entry(frame, textvariable="text")
text5.grid(column=2, row=5, sticky=W)
label6 = ttk.Label(frame, text="This is a label")
label6.grid(column=1, row=6, sticky=W)
text6 = ttk.Entry(frame, textvariable="text")
text6.grid(column=2, row=6, sticky=W)
label7 = ttk.Label(frame, text="This is a label")
label7.grid(column=1, row=7, sticky=W)
text7 = ttk.Entry(frame, textvariable="text")
text7.grid(column=2, row=7, sticky=W)
label8 = ttk.Label(frame, text="This is a label")
label8.grid(column=1, row=8, sticky=W)
text8 = ttk.Entry(frame, textvariable="text")
text8.grid(column=2, row=8, sticky=W)
label9 = ttk.Label(frame, text="This is a label")
label9.grid(column=1, row=9, sticky=W)
text9 = ttk.Entry(frame, textvariable="text")
text9.grid(column=2, row=9, sticky=W)
root.mainloop()
Sie können keine Objekte scrollen, die mit "pack", "place" oder "grid" zu einer Leinwand hinzugefügt wurden. Lesen Sie https://StackOverflow.com/a/3092341/7432 für ein Beispiel –