滚动条在tkinter中的标签框架

时间:2015-06-19 18:21:29

标签: python tkinter

我正在尝试使用tk.Toplevel为我的gui创建的窗口创建一个滚动条。框架目前经常填充长串网格,一个买一个。 GUI的其余部分允许用户写入一系列使用网格一个接一个显示的字段。

数据可能如下所示:

  

sadas sfafaf fsaafads fdsafsf dfsfdsf fssfs fsfsfsfs fsfsfs sfsfsfs   fsssfsfsf

     

sadas sfafaf fsaafads fdsafsf dfsfdsf fssfs fsfsfsfs fsfsfs sfsfsfs   fsssfsfsf

     

sadas sfafaf fsaafads fdsafsf dfsfdsf fssfs fsfsfsfs fsfsfs sfsfsfs   fsssfsfsf

我使用这篇文章:Adding a scrollbar to a group of widgets in Tkinter作为指导我到达目前的位置。目前,当我打开窗口时,滚动条出现在左侧。只要我添加一行,GUI就会冻结,我必须关闭它。

以下是相关代码:

class data_popup():
    def __init__(self, parent):
        self.parent = parent
        self.top = tk.Toplevel(parent)
        self.top.title("Current Data")
        self.top.protocol('WM_DELETE_WINDOW', self.stop_close)
        #Frames
        self.header_labels_frame = tk.Frame(self.top)
        self.header_labels_frame.pack(side = tk.TOP)
        self.data_frame_1 = tk.Frame(self.top)
        self.data_frame_1.pack(side = tk.BOTTOM)        
        self.header_labels_list = []


        self.data_canvas = tk.Canvas(self.data_frame_1, borderwidth = 0)
        self.data_frame = tk.Frame(self.data_canvas)
        self.scrollbar = tk.Scrollbar(self.data_frame, orient = 'vertical', command = self.data_canvas.yview)
        self.data_canvas.configure(yscrollcommand = self.scrollbar.set)
        self.scrollbar.pack(side = 'right', fill = 'y')
        self.data_canvas.pack(side = "bottom", fill = 'both', expand = True)
        self.data_canvas.create_window((4,4), window = self.data_frame, anchor = 'nw', tags = "self.frame")
        self.data_frame.bind("<Configure>", self.myfunction)
        self.create_header()
        self.data_row_list = list()

    def myfunction(self, event):
        self.data_canvas.configure(scrollregion=self.data_canvas.bbox("all"))

2 个答案:

答案 0 :(得分:1)

通常,当GUI以您描述的方式冻结时,这是因为您在同一帧中同时使用gridpack。你没有显示你在框架中添加内容的代码,但我的猜测是,这就是正在发生的事情。

答案 1 :(得分:0)

对于在Google上发现此帖子的人,我可以使用此帖子中的信息来完成我需要的内容Adding a scrollbar to a frame using Tkinter (Python)