質問: 開発環境はlinuxです。 tkinterでwacomタブレットを使って、筆圧認識可能なエディターを作りたいと考えています。 しかし、tkinterのマウスイベントは筆圧を返しません。 どのようにすれば解決できるか、ご教示いただけるとありがたいです。 (できれば、マルチプラットフォーム対応できるとありがたいです。 あと、なるべくpythonで) 私は、xinput(linux)やlibwacomを使用する方法を考えつきましたが、使い方が分かりません。 よろしくお願いします。
回答: 明確な回答ではないので、散文になってしまいましたが、 ひとまず投稿します。 GTK が XInput を使ってるそうですが、 XInput の導入自体がwindowsではどうなのでしょう。 (gnome 利用時に使ってた事がありますが、Windows では使ったことなし) pyglet を tkinter に埋め込むのを思いつきましたが、 埋め込み方法のマルチプラットフォーム対応が手間になるかな。 VTK や matplotlib が、各種GUI向けに埋め込みようのウィジェットを提供してるので 同じアプローチでできないかと考えますが、実際に試したことはありません。 C拡張が必要になる場面は、埋め込み位なら ctypes でなんとかならないか。 位の思い付きレベルのアイデア。 tkinter に拘らなければ、マルチプラットフォームな選択肢は * Qt / QTabletEvent * pyglet (※一般的なGUIウィジェットは付属しない。3rd party 制のライブラリはあり) tkinter でタブレットを使うサンプルコードは cgkit.wintab を使ってました。 動作確認は一切してませんが、一通りライブラリ対応状況を調べたまとめ 対応プラットフォームが明記されたもの以外は ? で記載。 | library | pen-tablet | platform | license | | --- | --- | --- | --- | | tkinter | x | | | | qt5 | QTabletEvent | multi | | | wxPython | x | | | | GTK3 | △ motion event | multi? | | | kivy | △ | multi? | | | pygame(SDL) | x | | | | pyglet | o | multi? | | | cgkit.wintab | o | windows | MOZILLA | | JPen | o | multi | LGPL | * gtk は xinput で対応。xinputのwindows の対応が未確認 (windows で検索すると、xbox の xinput が出てきて、導入事例が探せない...) * kivy windows で(that doesnt report pressure and tilt) 筆圧取れない報告があり?(未確認) * cgkit wintab 利用 windows only * Java Pen Tablet Access Librar JPen JPen は processing (Java/Jython)で使われてるライブラリ、 要件には合いませんが、実装は参考になるかもしれない。 (自前で wintab, cocoa, xinput を扱いプラットフォーム毎の対応をする場合) > > Device access is implemented through providers. **JPen** contains providers for Linux (XInput), Windows (Wintab), Mac OS X (Cocoa, OS X 10.5) and the Java system mouse (Java AWT mouse). > > > 追記: github へ移行していたようです。 JPen github C/Java のライブラリ実装がありました。