【问题标题】:Unwanted border appearing when scrollable canvas added添加可滚动画布时出现不需要的边框
【发布时间】:2020-10-16 01:12:24
【问题描述】:

我在我的应用程序中编写了一个滚动条,它就像一种享受。唯一的问题是有一个恼人的黑框出现在边缘(见下文):

我所说的框架位于滚动条的右侧,位于“Ply builder”标题上方。

我的滚动条代码是:

"""Scroll bar"""
        canvas = Canvas(self, borderwidth=0)
        scrollable_frame = Frame(canvas)
        vsb = Scrollbar(self, orient="vertical", command=canvas.yview)
        canvas.configure(yscrollcommand=vsb.set, width=450, height=725)

        vsb.pack(side="right", fill="y")
        canvas.pack(side="left", fill="both", expand=True)
        canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")

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

不确定边框是否由CanvasFrame 或窗口元素控制。我也不知道如何摆脱它。

【问题讨论】:

标签: python tkinter scrollbar border frame


【解决方案1】:

正如@acw1668 在 cmets 中所说,

Canvas(...)中添加highlightthickness

这是最合理的方案,可以这样实现:

canvas = Canvas(self, borderwidth=0, highlightthickness = 0)
scrollable_frame = Frame(canvas)
vsb = Scrollbar(self, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set, width=450, height=725)

vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")

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

详细了解highlightthickness 参数。

高亮边框的宽度。默认值是系统特定的(通常是一个或两个像素)。 (highlightThickness/HighlightThickness)

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-11-02
    • 2017-06-30
    • 2021-02-20
    • 1970-01-01
    • 2011-03-01
    • 2019-11-20
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多