python tkinter,滚动条丢失旋钮(拇指)

时间:2019-05-11 21:31:41

标签: python-3.x tkinter scrollbar

【摘要】
通过tkinter,python。我在Canvas上设置了滚动条...然后成功了。
但是滚动条中缺少旋钮。

【背景】
这是我现在正在开发的应用程序。
应用程序的目的很简单。从目标URL中获取一些图标,然后将其作为平铺放置在Window中。

Application Window graphic

如您所见,无法将所有图标设置为初始窗口大小。
所以我想使用滚动条,然后向下滚动以显示以下图标。

现在成功地将滚动条放在右侧。但是在那个酒吧缺少旋钮(拇指)。
所以这不能用作滚动条(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.

请告诉我您的知识。

(FYI)https://github.com/we-yu/L_SL/blob/develop/Canvas_in_Canvas/src/GUICtrl.py行:196

1 个答案:

答案 0 :(得分:0)

我已经找到了自己解决问题的方法。 我的情况有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上,则Scrollbar可以滚动,但是window无法使用。 因此,将框架放在滚动条画布上。然后在该框架上放置主图形画布。

[Canvas-1][Canvas-2][Canvas-3]...
[Frame for gallery]
[Canvas for Scrollbar]
[Basement frame]