简体   繁体   English

Tkinter中标签框架的滚动条

[英]scrollbar for labels frame in tkinter

I am trying to create a scroll bar for a window created in my gui using tk.Toplevel. 我试图为使用tk.Toplevel在我的GUI中创建的窗口创建滚动条。 The frame currently often fills up with long grids of strings that are added one buy one. 当前,框架通常充满一长串的弦网,这些弦网一一买入。 The rest of the GUI allows a user to write to a series of fields which are displayed one after another using a grid. GUI的其余部分允许用户写入一系列使用网格逐个显示的字段。

The data might look something like this: 数据可能看起来像这样:

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 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

I used this post: Adding a scrollbar to a group of widgets in Tkinter as a guide to get to where I am right now. 我使用了这篇文章: 在Tkinter中将滚动条添加到一组小部件中,以作为到达当前位置的指南。 Currently, when I open the window the scroll bar appears on the left side. 当前,当我打开窗口时,滚动条出现在左侧。 As soon as I add a line the GUI freezes and I have to close it. 一旦添加一行,GUI就会冻结,我必须将其关闭。

Here is the relevant code: 以下是相关代码:

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"))

Often, when a GUI freezes in the manner you describe, it is because you use both grid and pack in the same frame. 通常,当GUI按照您描述的方式冻结时,这是因为同时使用了gridpack You aren't showing the code where you add something to the frame, but my guess is, that is what is happening. 您没有在代码中显示向框架添加内容的位置,但是我的猜测是,这是正在发生的事情。

对于在Google上找到此帖子的人,我可以使用此帖子中的信息来完成我需要的操作。 使用Tkinter(Python)将滚动条添加到框架中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM