【问题标题】:python tkinter, Scrollbar missing knob(thumb)python tkinter,滚动条缺少旋钮(拇指)
【发布时间】:2019-05-11 21:31:40
【问题描述】:

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

【背景】
这是我现在正在开发的应用程序。
应用程序的目的很简单。从目标 URL 中获取一些图标,然后将其作为 tile 放在 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.

请告诉我你的知识。

(仅供参考)https://github.com/we-yu/L_SL/blob/develop/Canvas_in_Canvas/src/GUICtrl.py Line:196

【问题讨论】:

  • 您似乎没有配置scrollregion,但由于无法运行您的代码,因此无法确定。
  • @BryanOakley 谢谢布莱恩先生。我搜索了scrollregion 并继续研究有关滚动条的方法,最后我得到了解决方法。我将发布我的案例的答案。

标签: python-3.x tkinter scrollbar


【解决方案1】:

我已经找到了如何自己解决它。 我的情况有两点。

  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-1][Canvas-2][Canvas-3]...
[Frame for gallery]
[Canvas for Scrollbar]
[Basement frame]

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2013-09-13
    • 2013-08-24
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多