する質問をすることでしか得られない、回答やアドバイスがある。14前提・実現したいことKivyのScrollViewの内部で、左クリックによるドラッグ操作を使いたいため、中クリック(ホイールクリック)によるドラッグでスクロールさせたいと思っています。'mouse,disable_multitouch')でマルチタッチを無効にしたのですが、右クリック、中クリックともに左クリックと同様に扱われてしまいスクロールには使えません。中クリックは左クリックとは扱わず、スクロール用として使えるようにしたいです。簡単なScrollViewのコードを載せておきます。v1.10.0attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー0コメントだとMarkdown使えないのでこっちに書きますね。このコードでは確かにそう捉えられてしまいますね、すみません、説明不足でした。右クリック・中クリックでも問題なくスクロールできております。右クリック・中クリックでもボタンが反応してしまうのが困るという意味だったんですよね多分。KivyにおいてMouseのような画面上の位置を指す類の入力はWidgetTreeの親から子へ順番に伝わっていくので、ボタンの祖先(直接の親とそのさらに上の親達)のWidgetのどれかを右クリック・中クリックを子に伝えないようにすればいいです。ScrollViewでは中クリックを使いたいはずなので、ScrollViewの子孫でなおかつボタンの祖先であるWidget(上のコードでいうならGridLayout)にそのような仕事をさせてあげればいいです。cls=TouchFilter)それを組み込んだGridLayoutを作って、元のGridLayoutと置き換えることで実現できます。左ドラッグを使いたいという件ですが、ソースコードは載せられないのですが、大まかには「ボタンがたくさん並んでいて、それをドラッグでなぞっただけで動作させたい」という認識で大丈夫です。on_pressだと難しそうなので、on_touch_downとon_touch_move内でcollide_pointを使って実現しています。kivy.uix.button.Buttonを使うか否かは悩むところですね。Buttonの持つ機能の内stateプロパティは役に立ちそうですが、touchに関する処理は全て自前で実装することになりそうなので。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。右クリック・中クリックでもボタンが反応してしまうのが困るという意味ではなかったですね。一応上記のコードのようにする事で中クリックや右クリックではボタンをなぞれなくなるので、参考までに。一応上記のコードのようにする事で中クリックや右クリックではボタンをなぞれなくなるので、参考までに。19:06「クリックの種類によってscroll_typeを変更するScrollViewの派生class」の中に、「クリックを選別するclassを継承したGridLayout」を配置することで、スクロールは左クリック以外、ボタンは左クリックのみの動作を実現することができました。ありがとうございます。プログラミング自体初心者ですが、GUIで何かを作るのは初めてなので、入力も継承されるというのは考え至りませんでした、勉強になります。ScrollVeiwの問題を先に解決したかっただけで、GridLayout内での右クリック・中クリックをどうするかというのも後々考える必要があったので助かりました。Buttonに関しては私も使う意味が薄いと考えており、Widgetにcanvasで色付けしたものを使用しているのですが、何か他に適したものはあるでしょうか?Widgetの数は1000個以上に増やすこともあるので、少しでも適したものをと思っています。大きなWidgetを作成して内部でどこをクリックしたか判断する形にした方が軽くなるのかなとは思っているのですが・・・。「クリックの種類によってscroll_typeを変更するScrollViewの派生class」の中に、「クリックを選別するclassを継承したGridLayout」を配置することで、スクロールは左クリック以外、ボタンは左クリックのみの動作を実現することができました。ありがとうございます。プログラミング自体初心者ですが、GUIで何かを作るのは初めてなので、入力も継承されるというのは考え至りませんでした、勉強になります。ScrollVeiwの問題を先に解決したかっただけで、GridLayout内での右クリック・中クリックをどうするかというのも後々考える必要があったので助かりました。Widgetの数は1000個以上に増やすこともあるので、少しでも適したものをと思っています。大きなWidgetを作成して内部でどこをクリックしたか判断する形にした方が軽くなるのかなとは思っているのですが・・・。入力も継承されるというのは考え至りませんでしたいえ、私が言いたかったのは親Widgetが子Widget達のon_touch_xxx()を再帰的に呼ぶ事で入力が伝わっていくという事です。下のリンクは全てのWidgetの基底Classであるkivy.uix.widget.Widgetのon_touch_xxx()の実装なんですが、そうなっているのが分かると思います。何か他に適したものはあるでしょうか?その方法で問題ないかと思います。1000以上のそれだけの数になるのならRecycleViewが適切かと。いえ、私が言いたかったのは親Widgetが子Widget達のon_touch_xxx()を再帰的に呼ぶ事で入力が伝わっていくという事です。下のリンクは全てのWidgetの基底Classであるkivy.uix.widget.Widgetのon_touch_xxx()の実装なんですが、そうなっているのが分かると思います。その方法で問題ないかと思います。それだけの数になるのならRecycleViewが適切かと。15:05わざわざ仕組みまで教えていただいてありがとうございます。困ったら付近の実装を確かめるのも大事そうですね。RecycleViewに関しては使い方もどのように表示されるのかも全く知らないので、時間がある時に試してみようと思います。仕組みまで教えていただいてありがとうございます。困ったら付近の実装を確かめるのも大事そうですね。RecycleViewに関しては使い方もどのように表示されるのかも全く知らないので、時間がある時に試してみようと思います。17:10http://www.asakura.co.jp/books/isbn/978-4-254-12896-3/最近出たKivyの本でRecycleViewを扱っているので参考になるかも知れないです、私はまだ読んでませんが。最近出たKivyの本でRecycleViewを扱っているので参考になるかも知れないです、私はまだ読んでませんが。キャンセル完了するlink0でマルチタッチを無効にしたのですが、右クリック、中クリックともに左クリックと同様に扱われてしまいスクロールには使えません。マルチタッチはあくまで複数のタッチを実現するだけで、個々のボタンの役割が変わったりしないはずです。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。19:49このコードでは確かにそう捉えられてしまいますね、すみません、説明不足でした。右クリック・中クリックでも問題なくスクロールできております。'content']としていますが、私が求める挙動は以下のようなものです。・ホイール操作は通常のスクロール左ドラッグはon_touch_moveで使用しているため、スクロールには使いたくないのです。右クリックについては特に使用予定はないので、左クリック同様の動作でも使用不可でも構いません。このコードでは確かにそう捉えられてしまいますね、すみません、説明不足でした。右クリック・中クリックでも問題なくスクロールできております。'content']としていますが、私が求める挙動は以下のようなものです。左ドラッグはon_touch_moveで使用しているため、スクロールには使いたくないのです。右クリックについては特に使用予定はないので、左クリック同様の動作でも使用不可でも構いません。中クリック・中ドラッグでは'content'の動作これはScrollViewの派生Classを作って、on_touch_down()を上書きする方法しか思いつかないですね。on_touch_down()の仮引数touchのbutton属性を見て、ScrollViewのscroll_typeプロパティを変更してあげればできると思います。右クリックについては特に使用予定はないので、左クリック同様の動作でも使用不可でも構いません。使用不可にしたいなら上の派生Classを使った方法か、ScrollViewの親Widgetとして右ボタン入力を伝搬しないWidgetを作って用意してあげればできそうです。追記:もしアプリ全体に渡って右ボタンが要らないのなら、rootのWidgetを右ボタン入力を伝搬しないようにしてしまえばいいと思います。因みに右ボタン入力の伝搬を止めるには以下のようなメソッドを書いてあげればできます。左ドラッグはon_touch_moveで使用しているため、スクロールには使いたくないのです。これはScrollViewの派生Classを作って、on_touch_down()を上書きする方法しか思いつかないですね。on_touch_down()の仮引数touchのbutton属性を見て、ScrollViewのscroll_typeプロパティを変更してあげればできると思います。右クリックについては特に使用予定はないので、左クリック同様の動作でも使用不可でも構いません。使用不可にしたいなら上の派生Classを使った方法か、ScrollViewの親Widgetとして右ボタン入力を伝搬しないWidgetを作って用意してあげればできそうです。追記:もしアプリ全体に渡って右ボタンが要らないのなら、rootのWidgetを右ボタン入力を伝搬しないようにしてしまえばいいと思います。因みに右ボタン入力の伝搬を止めるには以下のようなメソッドを書いてあげればできます。左ドラッグはon_touch_moveで使用しているため、スクロールには使いたくないのです。中クリック・中ドラッグでは'content'の動作>>これはScrollViewの派生Classを作って、on_touch_down()を上書きする方法しか思いつかないですね。>on_touch_down()の仮引数touchのbutton属性を見て、ScrollViewのscroll_typeプロパティを変更してあげればできると思います。ありがとうございます。今すぐに試せないのですが、その方法で思ったとおりの動作にできそうです。恥ずかしながらクリックの種類を見分ける方法をリファレンスから見つけられなかったもので、下に書いていただいているコードで歯がゆかったところに手が届きそうです。左ドラッグを使いたいという件ですが、ソースコードは載せられないのですが、大まかには「ボタンがたくさん並んでいて、それをドラッグでなぞっただけで動作させたい」という認識で大丈夫です。on_pressだと難しそうなので、on_touch_downとon_touch_move内でcollide_pointを使って実現しています。>これはScrollViewの派生Classを作って、on_touch_down()を上書きする方法しか思いつかないですね。>on_touch_down()の仮引数touchのbutton属性を見て、ScrollViewのscroll_typeプロパティを変更してあげればできると思います。ありがとうございます。今すぐに試せないのですが、その方法で思ったとおりの動作にできそうです。恥ずかしながらクリックの種類を見分ける方法をリファレンスから見つけられなかったもので、下に書いていただいているコードで歯がゆかったところに手が届きそうです。左ドラッグを使いたいという件ですが、ソースコードは載せられないのですが、大まかには「ボタンがたくさん並んでいて、それをドラッグでなぞっただけで動作させたい」という認識で大丈夫です。on_pressだと難しそうなので、on_touch_downとon_touch_move内でcollide_pointを使って実現しています。メニューボタン押すと画面切り替えがしたいです。頂いたご意見への回答は行っておりません。