2017-06-15 212 views
0

以下代码用于创建具有tkinter的Text()函数的表。我想添加一个滚动条到这个窗口,但我猜想当我将滚动条添加到Text()时,此方法不用于滚动窗口,它用于在Text()内滚动。如何使用tkinter为文本创建表添加滚动条

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

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) 

回答

0

您不能滚动添加到文本构件与grid部件。文本小部件只能滚动嵌入window_create的小部件。

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

+0

哦,谢谢你,我正在看链接。 –

+0

我根据你写的帖子修改了代码。我把滚动条都放到x和y轴上。你写的代码正在工作。但我想问一个关于行和列数量的不同问题。例如根据测试,max row * col是18 * 18,当我键入19 * 19时,程序正在等待计算。它也接受100 * 3但不接受100 * 4。你知道原因吗? –

+0

@dildeolupbiten:如果你想问另一个问题,请点击“Ask Question”按钮。 Stackoverflow不是用来支持评论中的长谈话。 –