可滚动框架Python Tkinter

时间:2016-01-15 16:59:15

标签: python scroll tkinter

我正在使用具有可滚动框架的项目。它允许我添加小部件到框架,但我无法让框架滚动并显示其余的小部件。我已经将我的代码与其他可滚动的在线框架进行了比较,但我没有注意到它们的区别。任何人都能看到解决方案。

代码:

from Tkinter import *
import ttk
import os

class GUI(Frame):
    def __init__(self, parent):
        Frame.__init__(self,parent)
        self.pack(fill=BOTH, expand=YES)

    def gameView(self):
        self.mainFrame = Frame(self)
        self.mainFrame.pack(side=TOP)

        self.scroller = ttk.Scrollbar(self.mainFrame, orient=VERTICAL)
        self.scroller.pack(side=RIGHT, fill=Y)

        self.canvas = Canvas(self.mainFrame, bd=0)
        self.canvas.pack(fill=BOTH, side=LEFT)

        self.viewArea = Frame(self.canvas, bg="Pink")
        self.viewArea.pack(side=TOP, fill=BOTH)

        self.canvas.config(yscrollcommand=self.scroller.set)
        self.scroller.config(command=self.canvas.yview)
        self.canvas.create_window((0,0), window=self.viewArea, anchor=NW, width=783, height=650)

        self.viewArea.bind("<Configure>", self.scrollCom)

        self.itemHolder = Frame(self.viewArea, bg="Pink")
        self.itemHolder.pack(side=TOP)

        self.gameGather()

    def scrollCom(self, event):
        self.canvas.config(scrollregion=self.canvas.bbox("all"), width=783, height=650)

    def gameGather(self):
        for i in range(0, 50):
            label = Label(self.viewArea, text="Pie")
            label.pack(side=TOP)

root = Tk()
root.title("School Vortex 2.0")
root.geometry("800x650")
root.resizable(0,0)

gui = GUI(root)
gui.gameView()

root.mainloop()

1 个答案:

答案 0 :(得分:0)

当您将窗口放在画布上时,您明确地给它一个高度和宽度。因此,完全忽略了框架的实际宽度和高度。因为框架几乎完全是画布的高度,所以没有任何东西可以滚动。

如果您从width调用中删除heightcreate_window选项,您的框架将可滚动。