Ich bin neu in Tkinter und Python3. Ich habe daran gearbeitet, eine Bildlaufleiste für einen Frame zu erstellen, der ein untergeordnetes Element eines Canvas ist, das auch ein Kind von Toplevel() ist. Die Scrollbar-Tasten funktionieren gut, aber die Bar/Box selbst erstreckt sich von oben nach unten und kann sich nicht bewegen. Außerdem kann der Benutzer mit den Scroll-Tasten weit über den Inhalt hinaus blättern (wo nichts zu sehen ist). Hier ist der Code.So passen Sie die Bildlaufleiste an?
#! /usr/bin/env python3
from tkinter import *
from filegroups import typeGroups
app = Tk()
types_window = Toplevel(app)
types_window.wm_title('Types')
yscrollbar = Scrollbar(types_window, orient=VERTICAL)
yscrollbar.grid(row=0, column=1, sticky=N+S)
canvas = Canvas(types_window,
width = 300,
height = 500,
yscrollcommand=yscrollbar.set)
canvas.grid(row=0,column=0)
canvas.config(scrollregion=canvas.bbox("all"))
yscrollbar.config(command=canvas.yview)
frame = Frame(canvas)
canvas.create_window(0,0,anchor=NW,window=frame)
for key in sorted(typeGroups.keys()):
options_frame = LabelFrame(frame, text=key)
options_frame.grid(padx=5, pady=10)
for item in typeGroups[key]:
item_button = Checkbutton(options_frame,
text=item)
item_button.grid()
app.mainloop()