滚动条在Tkinter图形画布上不起作用

2024-04-24 02:51:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我意识到有类似的问题已经张贴,但我试图遵循每一个解决方案没有运气。你知道吗

我使用matplotlib创建了一个具有可变数量子图的图。这个数字很大,所以许多子图在页面上不可见。你知道吗

我正在尝试添加一个滚动条,以允许用户查看其他子窗口。滚动条看起来和我预期的一样,但它根本不起作用。你知道吗

下面是本页代码的一部分。你知道吗

class PageTwo(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        canvas = FigureCanvasTkAgg(f,self)
        canvas.draw()

        scroll=Scrollbar(self, orient = VERTICAL)
        scroll.pack(side = RIGHT, fill=tk.BOTH)

        canvas.get_tk_widget().config(yscrollcommand=scroll.set)
        scroll.config(command=canvas.get_tk_widget().yview)

        canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand = True)

结果如下:

Figure Canvas with Scrollbar


Tags: selfconfiggetinitwidgetfillframeside
2条回答

我可以通过使用以下配置滚动区域来修复滚动条:

canvas.get_tk_widget().config(scrollregion=(0,0,1000,10000))

但是,当我现在滚动时,图被切掉了页面底部原来的位置(参见图):

Image

我现在想弄清楚如何扩展FigureCanvasTkAgg,以便能够查看所有子图。你知道吗

试试这个。你可能没有把斯克罗巴放到画布上。你知道吗

class PageTwo(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        canvas = FigureCanvasTkAgg(f,self)
        canvas.draw()

        scroll=Scrollbar(canvas, orient = VERTICAL)
        scroll.pack(side = RIGHT, fill=tk.BOTH)

        canvas.get_tk_widget().config(yscrollcommand=scroll.set)
        scroll.config(command=canvas.get_tk_widget().yview)

        canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand = True)

所以我改变了这个。 scroll=Scrollbar(self, orient = VERTICAL) 到这个scroll=Scrollbar(canvas, orient = VERTICAL)

相关问题 更多 >