2016-07-18 25 views
-1

私のプログラムのキャンバスにスクロールバーウィジェットを追加しようとしています。このプログラムは、基本的に、マスターにCanvasを追加して、.grid()を使用してキャンバスにフレームを追加することによって作成されたテーブルです。私はコードの関連部分を含めました。私は間違っていることが何であるか分かりません。Tkinterのキャンバスにスクロールバーを追加する際の問題

from Tkinter import *  
master = Tk() 
canvas = Canvas(master) 
title_frame = Frame(canvas, bd=2, relief=RIDGE) 
... 
canvas.pack() 
vbar = Scrollbar(master, orient=VERTICAL) 
vbar.config(command=canvas.yview) 
vbar.pack(side=RIGHT, fill=Y) 
canvas.config(yscrollcommand=vbar.set) 
master.mainloop() 

This is what my program is producing.

+0

私はあなたが ''以来canvas.config(yscrollcommand = ybar.set) 'の代わりに' canvas.configの(xscrollcommand = hbar.set)の行を含めるしたいと思います前の行は 'hbar'ではなく' vbar'に関するものです。 –

+0

@ j_4321質問を投稿したときに間違って入力しました。 – jnkjn

+0

投稿したコードは、あなたが言う出力を生成しません。また、キャンバスは '.grid()'を使って追加されたウィジェットをスクロールできません。これは、キャンバス自体でオブジェクト作成をスクロールするだけです(例: 'create_window')。 http://stackoverflow.com/a/3092341/7432 –

答えて

0

私はキャンバスを詰め、スクロールバーが下のキャンバスの代わりの右側に今あるとき、私はちょうどside=LEFTを追加しました。 packのデフォルト側はTOPです。

from Tkinter import *  
master = Tk() 
canvas = Canvas(master) 
canvas.pack(side=LEFT) 
vbar = Scrollbar(master, orient=VERTICAL) 
vbar.config(command=canvas.yview) 
vbar.pack(side=RIGHT, fill=Y) 
canvas.config(yscrollcommand=vbar.set) 
master.mainloop() 

scrollbar

編集:私は今、あなたの問題を理解すると思う:私は、水平および垂直の両方のスクロールバーを表示しようとしたが、私はパックレイアウトでそれを行うために管理していませんでした。私はあなたの代わりにグリッドを使用することをお勧め:

from Tkinter import *  
master = Tk() 
canvas = Canvas(master) 
canvas.grid(row=0,column=0) 
hbar = Scrollbar(master, orient=HORIZONTAL) 
hbar.config(command=canvas.xview) 
hbar.grid(row=1, column=0, sticky=E+W) 
vbar = Scrollbar(master, orient=VERTICAL) 
vbar.config(command=canvas.yview) 
vbar.grid(row=0,column=1,sticky=N+S) 

canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set) 
master.mainloop() 
+0

あなたが提案した変更を行いましたが、プログラムはまだスクロールバーを表示しません。他の提案や試してみたいことはありますか? – jnkjn

+0

私は答えを編集して、パックの代わりにグリッドを使用してソリューションを表示しました。 –

+0

ありがとう、私は今、私のコンピュータから離れていますが、私がそれに戻ったときに私はそれを試してみます。私はあなたが私に与えた助けに本当に感謝しています。 – jnkjn

関連する問題