область прокрутки для ВСЕХ виджетов в CUSTOMtkinter

Рейтинг: 0Ответов: 1Опубликовано: 18.02.2023

как сделать область похожей на то, как мы делаем с CTk.frame только там где колесиком мыши можно прокручивать и виджеты будут перемещаться?

Может кто делал и есть пример или опять же гидхаб?

Ответы

▲ 1Принят

К сожалению, элемент Frame является не прокручиваемым.

Для достижения нужных целей приходится использовать некоторые костыли.

Самый лучший костыль:

  1. Создаем Canvas
  2. К нему привязываем ttk.Scrollbar
  3. В Canvas кладем Frame
  4. В последний фрейм кладем нужное нам...

Вот пример:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
container = ttk.Frame(root)
canvas = tk.Canvas(container)
scrollbar = ttk.Scrollbar(container, orient="vertical", command=canvas.yview)
scrollable_frame = ttk.Frame(canvas)

scrollable_frame.bind(
    "<Configure>",
    lambda e: canvas.configure(scrollregion=canvas.bbox("all")))

canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")

canvas.configure(yscrollcommand=scrollbar.set)

for i in range(50):
    ttk.Label(scrollable_frame, text="Sample scrolling label").pack()

container.pack()
canvas.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")

root.mainloop()