2017-05-23 5 views
2

私は100個のエントリウィジェットを作ろうとしています。垂直スクロールバーを使用してスクロールする必要があります。フレームにはスクロールバーオプションがないので、キャンバスを使用しました。しかし、Entryウィジェットを追加するとスクロールバーが機能しません。私の間違いを誰かが助けてくれますか?pythonのtkinterでスクロールバーが動作しない

MY CODE:

from tkinter import * 
root=Tk() 
frame=Frame(root,width=300,height=300) 
frame.grid(row=0,column=0) 
canvas=Canvas(frame,width=300,height=300,scrollregion=(0,0,500,500)) 

for _ in range(100): 
    Entry(canvas).pack() 

vbar=Scrollbar(frame,orient=VERTICAL) 
vbar.pack(side=RIGHT,fill=Y) 
vbar.config(command=canvas.yview) 

canvas.config(yscrollcommand=vbar.set) 
canvas.pack(side=LEFT,expand=True,fill=BOTH) 

root.mainloop() 

答えて

2

Aキャンバスのみ.create_window()を経由して、それに追加された子ウィジェットをスクロールすることができます。 .pack()で追加された子ウィジェットは、基本的にキャンバスの上に座っていて、それによって制御されません。

ジオメトリマネージャーとほぼ同じですが、座標は完全にあなた次第ですので、Entryウィジェットをどのくらい離れて配置するかは、正確なフォントに基づいて異なります1つのフレームをCanvasに直接追加し、その内部にすべてのEntryウィジェットをパックする方が効果的です。スクロールを許可しながら、自動サイジングの利点があります。

+0

私は今それを得ました。私を指摘してくれてありがとう。私は 'create_window()'を見逃しました。 – Sundararajan

関連する問題