スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tkinterではまったところその2(ホイールマウス対応対応)

リストボックスにスクロールバーをつけて見たところ、そのままではホイールに対応してないんですね!
マウスホイールの処理をバインドしてあげる必要があると言うことで、書いてみたところ・・・。

動かない・・・反応しないw
どうやらXPの場合、マウスカーソルがwidget上に乗った場合の処理もバインド処理してあげる必要があるそうです。

リストボックスにX軸Y軸のスクロールバーを配置して、ホイール操作ができるようにバインドしているソースをつけておきます。
リストボックスおよびY軸スクロールバーにマウスカーソルがきたときにコールバックされ、Y軸をホイール操作できるようにバインドしてます。
また、X軸スクロールバーにマウスカーソルがきたときもコールバックされ、ホイール操作できるようにバインドしてあります。


#LabelFrameを配置
lf_conv = LabelFrame(self.master, text = 'Conversation Info', labelanchor = NW)
lf_conv.pack(padx = 5, pady = 2, fill = X)

#リストボックスとX軸Y軸スクロールバーを配置するフレーム作成
f_conv = Frame(lf_conv)
f_conv.pack(fill = X)

#リストボックスとX軸Y軸スクロールバーを配置
self.lst_conv = Listbox(f_conv, width=50, height=10)
yscroll_c = Scrollbar(f_conv, command=self.lst_conv.yview, orient=VERTICAL)
xscroll_c = Scrollbar(f_conv, command=self.lst_conv.xview, orient=HORIZONTAL)
self.lst_conv.configure(xscrollcommand=xscroll_c.set, yscrollcommand=yscroll_c.set)

yscroll_c.pack(side = RIGHT, fill = Y)
xscroll_c.pack(side = BOTTOM, fill = X, expand = 1)
self.lst_conv.pack(side = LEFT, fill = BOTH, expand = 1)

#マウスカーソルが乗ったときX軸Y軸スクロールバーをバインド
yscroll_c.bind('<MouseWheel>', lambda e:self.lst_conv.yview_scroll(-1*(1 if e.delta>0 else -1),UNITS))
yscroll_c.bind('<Enter>',lambda e:yscroll_c.focus_set())
self.lst_conv.bind('<Enter>',lambda e:yscroll_c.focus_set())
xscroll_c.bind('<MouseWheel>', lambda e:self.lst_conv.xview_scroll(-1*(1 if e.delta>0 else -1),UNITS))
xscroll_c.bind('<Enter>',lambda e:xscroll_c.focus_set())


なるほど・・・奥が深い。
もはや無理なのかと思いましたが、ちゃんと動いてよかった!
関連記事
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : Portable Python

コメント

Secret

プロフィール

cherrypy

Author:cherrypy
四方山話とか、にわかプログラミングなどについて語ります。

カウンター
はてな人気エントリー
最新記事
スポンサードリンク
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。