如何使用tkinter为文本制作表添加滚动条

时间:2017-06-15 15:39:50

标签: python tkinter

以下代码用于创建带有tkinter的Text()函数的表。我想在这个窗口中添加一个滚动条,但我想当我将滚动条添加到Text()时,此方法不能用于滚动窗口,而是用于在Text()内滚动。

我没有为此示例添加几何图形。当前几何体取决于行数和列数。但是假设要求一个固定的几何尺寸,当我们写入行和列数量时,我们应该看到这个滚动条的其他行和列。

from tkinter import *


class Application:
    def __init__(self):

        self.window = Tk()
        self.window.title("Database")
        self.window.resizable(width=False, height=False)

        self.frame_1 = Frame(bg="black")
        self.frame_1.grid(row=0, column=0)

        self.menubar = Menu(tearoff=0)

        self.table()
        self.menu()
        self.mainloop = self.window.mainloop()

    def table(self):
        row = int(input("Row:"))
        column = int(input("Column:"))
        for i in range(row):
            for j in range(column):
                text = Text(self.frame_1, width=20, height=1)
                text.bind("<Button-3>", self.popup)
                text.grid(row=i, column=j, padx=1, pady=1)
                text.configure(state="disabled")

    def menu(self):
        self.menubar.add_command(label="Copy", command=lambda: self.window.focus_get().event_generate('<<Copy>>'))

    def popup(self, event):
        self.menubar.post(event.x_root, event.y_root)

1 个答案:

答案 0 :(得分:0)

您无法使用grid滚动添加到文本小部件的小部件。文本小部件只能滚动嵌入window_create的小部件。

最常用的技术是将所有小部件放在一个框架中,将该框架添加到画布,然后滚动画布。有关示例,请参阅Adding a scrollbar to a group of widgets in Tkinter