Python Tkinter, отсутствует полоса прокрутки (большой палец) - PullRequest
0 голосов
/ 12 мая 2019

【Резюме】
Автор: tkinter, python.Я установил полосу прокрутки на Canvas ... Тогда это удалось.
Но отсутствует ручка на полосе прокрутки.

【Фон】
Это мое приложение, которое сейчас разрабатывается.
ПриложенияЦель проста.Получите несколько значков из целевого URL, затем поместите их в качестве плитки в Window.

Графическое окно приложения

Как видите, не удается поместить все значки в начальные.размер окна.
Итак, я хочу использовать полосу прокрутки, а затем прокрутку, чтобы отобразить значки ниже.

Теперь удалось поместить полосу прокрутки справа.Но в этой строке отсутствует ручка (большой палец).
Так что это не работает как полоса прокрутки (TωT)

【Вопрос】
Как заставить код на этой вертикальной полосе прокрутки работать?

Это раздел сборки полосы прокрутки в моем файле src.
Уже существует полоса прокрутки, Это почти нормально ... Но, может быть, что-то упущено.

        # Make vertical scrollbar to see all stickers -----------------------
        outCV = tk.Canvas(self.iconsFrame, width=GUIController.__windowWidth, height=GUIController.__windowHeight)

        scrollbar = tk.Scrollbar(self.iconsFrame, orient=tk.VERTICAL)
        scrollbar.config(command=outCV.yview)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

        outCV.configure(yscrollcommand=scrollbar.set)
        outCV.pack()
        # --------------------------------------------------------------------
        gridRow = 0
        gridCol = 0

        for i, tkimg in enumerate(self.tkimgs) :

            # Put icons as tile.

Пожалуйста, дайте мне ваши знания.

(К вашему сведению) https://github.com/we-yu/L_SL/blob/develop/Canvas_in_Canvas/src/GUICtrl.py Строка: 196

1 Ответ

0 голосов
/ 15 мая 2019

Я уже нашел, как решить это сам. В моем случае 2 очка.

  1. Должно быть установлено scrollregion
  2. Полоса прокрутки работает только для Canvas. Итак, по моему делу. Нужны накладные рамы и холсты.

Путь решения

        self.outerCV = tk.Canvas(self.iconsFrame, width=GUIController.__windowWidth, height=GUIController.__windowHeight)

        scrollbar = tk.Scrollbar(self.iconsFrame, orient=tk.VERTICAL)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        scrollbar.config(command=self.outerCV.yview)

        self.outerCV.config(scrollregion=(0, 0, 2000, 2000), yscrollcommand=scrollbar.set)
        self.outerCV.pack(fill=tk.BOTH)

        galleryFrame = tk.Frame(self.outerCV)
        self.galleryTag = self.outerCV.create_window((0, 0), window=galleryFrame, anchor=tk.NW, width=self.outerCV.cget('width'))

Положите подвальную раму внизу окна. Затем поместите Canvas на это. Полоса прокрутки прикрепляется к этому холсту. Но если поместить Canvas на этот Canvas, полоса прокрутки работает для прокрутки, но окно не будет работать. Итак, поместите рамку на полосу прокрутки. Затем основные графические полотна на этом кадре.

[Canvas-1][Canvas-2][Canvas-3]...
[Frame for gallery]
[Canvas for Scrollbar]
[Basement frame]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...