Tkinter スクロール フレーム カプセル化クラス (スクロール ホイールをサポート)、コピーが利用可能

from tkinter import * 
class ScrollableFrame(Frame):
    def __init__(self, container, *args, **kwargs):
        super().__init__(container, *args, **kwargs)
        canvas = Canvas(self)
        scrollbar = Scrollbar(self, orient="vertical", command=canvas.yview)
        self.scrollable_frame = Frame(canvas)
        self.scrollable_frame.bind("<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all")))
        canvas.create_window((0, 0), window=self.scrollable_frame, anchor="nw")
        canvas.configure(yscrollcommand=scrollbar.set)
        canvas.pack(side="left", fill="both", expand=True)
        scrollbar.pack(side="right", fill="y")
        def _on_mousewheel(event):  # 鼠标滚轮
            canvas.yview_scroll(int(-1*(event.delta/120)), "units")
        canvas.bind_all("<MouseWheel>", _on_mousewheel)  # 绑定鼠标滚轮

 ルーチンを使用します:

from tkinter import * 
root = Tk()
frame = ScrollableFrame(root)
frame.pack(fill=BOTH, expand=1)
for i in range(20):
    Button(frame.scrollable_frame, text="%s 示例按钮"%i).pack()
root.mainloop()

 効果例:

おすすめ

転載: blog.csdn.net/qq_40039731/article/details/127671281