无法在tkinter中滚动图像

时间:2013-10-24 13:24:41

标签: tkinter

我有一个可以承担可变大小的图像,我想在带有滚动条的窗口中显示它,以便探索它。 我做了以下

        connroot = Toplevel()
        connfr = Frame(connroot)
        conncv = Canvas(connfr, relief=SUNKEN)
        sbarV = Scrollbar(connfr, orient=VERTICAL)
        sbarH = Scrollbar(connfr, orient=HORIZONTAL)
        sbarV.config(command=conncv.yview)
        sbarH.config(command=conncv.xview)
        conncv.config(yscrollcommand=sbarV.set)
        conncv.config(xscrollcommand=sbarH.set)
        sbarV.pack(side=RIGHT, fill=Y)
        sbarH.pack(side=BOTTOM, fill=X)
        conncv.pack(side=LEFT, expand=YES, fill=BOTH)
        connfr.pack()

然后在给定的事件中我显示图像:

        photoconn = PhotoImage(file=tg)
        conncv.create_image(0,0, anchor=NW, image=photoconn)
        img.append(photoconn)

我的问题:显示的图像被裁剪,但滚动条“已满”,无处可滚动。 但我确定我在某处读到滚动条必须将框架作为父母

1 个答案:

答案 0 :(得分:1)

您必须告诉画布小部件大型虚拟画布的哪些部分应该是可见的。您可以通过设置画布的scrollregion属性来完成此操作。通常,您传入bbox方法的结果,该方法在画布中提供对象的边界框。特殊字符串"all"为您提供了一个框,其中所有画布对象都可以适合。

例如:

conncv.configure(scrollregion=conncv.bbox("all"))