Tkinter中的可滚动画布屏幕外

时间:2018-11-16 20:35:46

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

更新:我最终切换到使用Treeview,因为它支持滚动条,并且显示的表格更加整洁。

我有一个应用程序,可以从文件中输入标签以构建“表”。我想添加一个滚动条,但是这样做有些困难。我得到了一些工作,但方向不正确,您只能看到一半的桌子。我添加了.grid来拉伸框架,但是现在当我绘制表格时,它延伸到了屏幕之外,滚动条只是绘制在小部件的侧面-它不会滚动到任何地方。

这是绘制表格的类的一部分:

def tabledraw(self):
        self.table_values = Canvas(window1, borderwidth=5)
        #self.table_values.configure(scrollregion=[0,0,970,600])
        self.frame = Frame(self.table_values)
        self.vsb = Scrollbar(window1, orient="vertical", command=self.table_values.yview)
        self.table_values.configure(yscrollcommand=self.vsb.set)

        self.vsb.grid(row=3, column=2, sticky=N+S+E)
        self.table_values.grid(row=3, columnspan=3, padx=20, pady=20)

        self.table_values.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")
        self.frame.grid(columnspan=3, sticky=E+W)
        self.frame.bind("<Configure>", self.onFrameConfigure)

        with open('table_co.pkl', 'rb') as infile:
            table = pickle.load(infile)

        for i in range(self.height): 
            for j in range(self.width):
                self.b = Entry(self.frame, text="", width=30)
                self.b.grid(row=i, column=j)
                self.b.insert(0, str(table[i][j]))

    def onFrameConfigure(self, event):
        #self.table_values.config(scrollregion=[0,0,970,200])
        self.table_values.configure(scrollregion=self.table_values.bbox("all"))

我尝试为画布的可滚动区域分配一个静态值,但似乎没有任何改变。

我是python的新手,所以如果我做错了事,请告诉我。

0 个答案:

没有答案