2017-12-11 104 views
1

マウスカーソルがテキストボックスウィジェットにあるときにマウスホイールのスクロールが機能するGUIでテキストボックスを作成しました。マウスカーソルがテキストボックスウィジェットにないときに、私はそれを実行できるようにしたい。私はマウスオーバーイベントでいくつかのラベルを持っています。テキストがテキストボックスウィジェット全体に対して長すぎる場合があります。つまり、マウスカーソルがラベルに表示されている間にスクロールする必要があります。その理由は、マウスカーソルがラベル上にないときにテキストが削除され、ラベル上にスクロールが行われなければならないからです。Python:マウスカーソルがテキストボックス内にあるときにマウスホイールでスクロールする(tkinter)

def mousewheel(event): 
     textbox.yview_scroll(-1*(event.delta/120), "units") 

textbox = Text(ctr_mid, height=30, width=60, font="Arial") 
    textbox.grid(row=6,sticky=S) 
    textbox.bind_all("<MouseWheel>", mousewheel) 

私はオンラインソリューションを探し、オンラインmouswheel機能を見つけたが、それを実行しようとしたとき、私はこのエラーを取得:

Traceback (most recent call last): 
    File "C:\Users\Homie\AppData\Local\Programs\Python\Python36- 
32\lib\tkinter\__init__.py", line 1699, in __call__ 
    return self.func(*args) 
    File "C:\Users\Homie\PycharmProjects\bluescreen\Game.py", line 402, in 
mousewheel 
self.textbox.xview_scroll(-1*(event.delta/120), "units") 
    File "C:\Users\Homie\AppData\Local\Programs\Python\Python36- 
32\lib\tkinter\__init__.py", line 1724, in xview_scroll 
self.tk.call(self._w, 'xview', 'scroll', number, what) 
_tkinter.TclError: expected integer but got "1.0" 

私があれば謝罪ので、それはここに私の最初の記事です私は間違いを犯した。

+3

ルート( 'tk.Tk')ウィジェットに単に' bind_all'を実行します。 –

+0

私はそれをしましたが、私はまだ_tkinter.TclError:期待される整数を取得しましたが、 "1.0"エラーが発生しました。 バインドするbind_allを変更しようとしました。私はエラーは表示されませんでしたが、スクロールは機能しませんでした。 – Chris

+1

さて、行番号は何ですか?質問にそれを含めましたか? –

答えて

1

私は初心者でもあり、これは初めての投稿です。しかし、私は同じエラーがあり、それをかなり簡単に解決しました。

あなたが投稿したエラーメッセージには整数が必要だと言われていましたが、何かフロート( "1.0")があります。そのため、 "-1 *(event.delta/120)"の結果が浮動小数点数ではなく整数であることを保証する必要があります。したがって、あなたの関数マウスホイールの新しいコードは次のようになります:

def mousewheel(event): 
    textbox.yview_scroll(int(-1*(event.delta/120)), "units") 
関連する問題