【问题标题】:Why is the canvas scrollbar disabled in a tkinter window?为什么在 tkinter 窗口中禁用画布滚动条?
【发布时间】:2020-03-12 15:30:53
【问题描述】:

我有一个使用 python 3 制作的 tkinter 应用程序的问题。我尝试在不使用框架容器的情况下创建一个画布小部件,并尝试在我的画布上添加两个滚动条,一个是垂直的,另一个是水平的,在这里是代码:

class drawCavnas(object):

    def __init__(self, master, width=500, height=500):
        ''' build the canvas object '''

        # class attributes
        self.master = master
        self.cWidth = width
        self.cHeight = height

        # creating the canvas object
        self.canvas = tk.Canvas(self.master, width=self.cWidth, height=self.cHeight, bg="green")
        self.canvas.grid(row=0, column=1, sticky="nwes")
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))

        # creating the scrolling
        self.scroll_x = tk.Scrollbar(self.master, orient="horizontal", command=self.canvas.xview)
        self.scroll_x.grid(row=1, column=1, sticky="ew")

        self.scroll_y = tk.Scrollbar(self.master, orient="vertical", command=self.canvas.yview)
        self.scroll_y.grid(row=0, column=2, sticky="ns")

        self.canvas.configure(yscrollcommand=self.scroll_y.set, xscrollcommand=self.scroll_x.set)

master 是使用 tk.Tk() 创建的窗口。这里的问题是,一旦我运行了程序并创建了窗口,画布工具栏就被禁用了,我无法与它们交互。我试图调整窗口大小,但画布也调整大小。那你有解决办法吗?

【问题讨论】:

  • 请提供一个可测试的例子。也就是说,到目前为止,您还没有更新滚动区域的方法,因此这可能是问题的一部分。当您说“禁用”时,您的意思是变灰还是没有滑块可拖动?
  • @jizhihaoSAMA 请不要尝试在问题中添加代码。 OP 必须是更新它的人。他们的原始代码中可能有一些东西会导致问题,或者是您修改 OP 代码时可能遗漏的其他问题的一部分。
  • 好的。我以后会注意的。谢谢

标签: python-3.x tkinter scrollbar tkinter-canvas


【解决方案1】:

为什么画布滚动条在 tkinter 窗口中被禁用?

您必须说明您希望较大虚拟画布的哪个部分可滚动。您已将滚动区域设置为以画布中的对象为边界 (self.canvas.configure(scrollregion=self.canvas.bbox("all")))。但是,您在画布中绘制任何内容之前已经完成了此操作,因此 tkinter 认为没有什么可滚动的。

如果您有一个 500x500 的画布,但希望能够在更大的区域上绘图,您可以对滚动区域进行硬编码。

例如,这将让您在 2000x2000 的区域中滚动:

self.canvas.configure(scrollregion=(0,0,2000,2000)

【讨论】:

  • 非常感谢您抽出宝贵的时间来纠正代码,并且效果很好。在这一点上,如果你想帮助我一点,我还有另一个问题。在 tkinter 中是否可以让滚动条从他的“radious”中间开始?
  • @Luke-ProgrammingChannel:是的,画布和滚动条都有影响画布哪些部分可见的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2021-04-27
  • 2015-02-08
  • 1970-01-01
相关资源
最近更新 更多