2015-06-19 45 views
0

我想創建一個使用tk.Toplevel在我的gui中創建的窗口的滾動條。該框架目前經常填滿長長的網格,添加一個買一個。 GUI的其餘部分允許用戶寫入一系列使用網格一個接一個顯示的字段。tkinter中的標籤框架的滾動條

數據可能是這個樣子:

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

你的代碼的縮進不正確的人。 –

+1

_「只要我添加一行,GUI就會凍結,我必須關閉它。」_您不是在同一個窗口和/或框架中同時使用「網格」和「包」,對嗎?這使得Tkinter進入一個無限循環。 – Kevin

+0

我的編輯器上的縮進是正常的,它只是複製粘貼錯誤。我會修好它。 – DustySack

回答

1

通常,當一個GUI在你所描述的方式凍結,那是因爲你在相同的幀同時使用gridpack。你沒有在框架中顯示代碼,但我的猜測是,這就是發生了什麼。

+0

你是對的!我是使用網格的標籤。如何使用網格而不是包將畫布添加到框架? (至於行/列值應該如何) – DustySack

+0

滾動條和畫布當前正在使用包。所以我需要滾動條的網格。 – DustySack

+0

使它們都爲網格(使用行= 0,列= 0)可以防止崩潰,但它會改變顯示。每次我嘗試寫入時,不是每行都顯示一行,而是每行顯示一個點。當我寫一行時,滾動條也會消失,如果我全部刪除,它們會再次出現。 – DustySack