14

Tkinter をウィンドウ マネージャーとして使用する Python 3.3 プロジェクトに取り組んでいます。キャンバスにマウス スクロール ホイール イベントを設定しました。Windows 7、8、および Ubuntu ではスクロールが機能しますが、Mac OS X Mountain Lion で Magic Mouse を使用してスクロールすると、Tk メイン ループで次のエラーが発生してプログラムがクラッシュします。

File "/Users/xxxx/Documents/Repositories/tycoon/agentsim.py", line 291, in start
    self._root.mainloop()
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/__init__.py", line 1038, in mainloop
self.tk.mainloop(n)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 0: invalid continuation byte

私のコードは次のとおりです。

self._hscroll.configure( command=self._canvas.xview )
self._vscroll.configure( command=self._canvas.yview )
self._canvas.bind('<MouseWheel>', lambda event: self.rollWheel(event))

hscroll と vscroll は、フォーム内のスクロールバー オブジェクトです。

通常のマウスを使用すると、問題は発生しません。トラックパッドでスクロールしようとしたときにも発生します(慣性スクロールがオンになっている場合)

この機能を動作させるには、Tk を更新する必要がありますか? それとも、一般的に壊れているだけですか?

4

3 に答える 3

10

これらのエラーをキャッチできます。

while True:
    try:
        root.mainloop()
        break
    except UnicodeDecodeError:
        pass

これは、慣性的にスクロールしても完全に機能するようで、インストール/アップグレードは必要ありません。

于 2016-04-16T17:15:27.267 に答える