2017-10-27 10 views
-1

ウィンドウ内の他のフレームと並んでいるフレームにスクロールバーを追加する必要があります。私はその特定のフレームにスクロールバーを追加したいだけですが、私はそれに問題があります。スクロールバーウィジェットを格納するためにtk.Canvasを使用する必要性について私は読んだが、まだ間違っている。Tkinterスクロールバーフレーム内のウィジェット

Picture of output。私はスクロールバーが左のフレームにのみ必要です。

はここに私のコード例です:

import tkinter as tk 

class Example: 
    def __init__(self, master): 
     self.master = master 

     self.canvas = tk.Canvas(master, borderwidth=0, background="#ffffff") 
     self.frame = tk.Frame(self.canvas, background="#ffffff") 
     self.vsb = tk.Scrollbar(master, orient="vertical", command=self.canvas.yview) 
     self.canvas.configure(yscrollcommand=self.vsb.set) 

     self.vsb.pack(side="right", fill="y") 
     self.canvas.pack(side="left", fill="both", expand=True) 
     self.canvas.create_window((4,4), window=self.frame, anchor="nw", 
            tags="self.frame") 

     self.frame.bind("<Configure>", self.onFrameConfigure) 

     self.populate() 


     self.frame1 = tk.Frame(master, background="#ffffff",height=200,width=200) 
     self.frame1.pack() 

    def populate(self): 
     '''Put in some fake data''' 
     for row in range(100): 
      tk.Label(self.frame, text="%s" % row, width=3, borderwidth="1", 
        relief="solid").grid(row=row, column=0) 
      t="this is the second column for row %s" %row 
      tk.Label(self.frame, text=t).grid(row=row, column=1) 

    def onFrameConfigure(self, event): 
     '''Reset the scroll region to encompass the inner frame''' 
     self.canvas.configure(scrollregion=self.canvas.bbox("all")) 

root=tk.Tk() 
app = Example(root) 
root.mainloop() 
+0

コードを実行するとスクロールバーが表示され、スクリーンショットにはスクロールバーも表示されます。私は何の問題も見ません。 –

答えて

-1

私があなただったら、あなたは、ウィジェットが正確になりたい何行と列を指定することができますので、私は強くTkinterのためのGridレイアウトマネージャを探してお勧めします。拡張動作と縮小動作を指定することもできます。

+0

これは私の問題だったようです。私は正常にスクロールバーを追加することができた。感謝! –

関連する問題