2012-01-17 17 views
3

this stackoverflow postのコードを使用して、他のすべてのチェックボタンの背景色を含むように少し変更し、Textウィジェットの幅を埋めるように幅を設定しました。しかし、これが起こると、マウスホイールを使ってスクロールすることはできません。私はスクロールバーにつかまなければならない。テキストウィジェット内のTkinterチェックボタン

通常のスクロールを可能にするこの方法がありますか?ここに私のコードは次のとおりです。

import Tkinter as tk 

root = tk.Tk() 
vsb = tk.Scrollbar(orient="vertical") 
text = tk.Text(root, width=40, height=20, yscrollcommand=vsb.set) 
vsb.config(command=text.yview) 
vsb.pack(side="right",fill="y") 
text.pack(side="top",fill="both",expand=True) 
for i in range(1000): 
    bg = 'grey' 
    if i % 2 == 0: 
     bg = 'white' 
    cb = tk.Checkbutton(text="checkbutton #%s" % i, bg=bg, width=35, justify=tk.LEFT) 
    text.window_create("end", window=cb) 
    text.insert("end", "\n") # to force one checkbox per line 

root.mainloop() 

答えて

0
. 
. 
text.focus() # <---------- 
root.mainloop() 
+0

これは役に立ちませんか?少なくともこの例では... – intargc

1

問題は、あなたがCheckbuttonsでテキストウィジェットを埋めるとき、あなたは今、テキスト、あなたのマウスがウィンドウ上にあるときにCheckbuttons'イベントバインディングとの対話(とではないということですウィジェットは「隠されている」)。テキストウィジェットはマウススクロールのためのバインディングを持っていますが(ボタン4と5)、チェックボタンは自動的には表示されません。また、(AFAIK)の親ウィジェットは、子供からイベントを受け取るように自動的に設定することはできないため、手動で行う必要があります。次のコードが機能します(cbの作成後に挿入します)。

cb.bind('<Button-4>', lambda event: text.yview_scroll(-1, tk.UNITS)) 
cb.bind('<Button-5>', lambda event: text.yview_scroll(1, tk.UNITS)) 
関連する問題