2020/03/17(火) [n年前の日記]
#1 [python] Kivyのスクロールバー関係を勉強中
PySide2 + QML でスクロールバーを使う方法は分かったけれど、他のGUIライブラリではそのへんどうなのかなと気になってきて。例えば Kivy あたりはスクロールバーが用意されていたりするのだろうかと。てなわけで、そのあたりをググったり試したりして勉強中。
以下のページが参考になった。ありがたや。
_Kivy ScrollViewの基本 - Qiita
kvファイル(レイアウトを指定するファイル)内で、ScrollView とやらで囲んでやればいいらしい。いくつか指定が必要になるらしいけど、随分簡単なのだなあ…。
手元の環境、Windows10 x64 1909 + Python 3.7.7 64bit + Kivy 1.11.1 で試してみたけれど、すんなり動いてくれた。
それはともかく、まるでスマホのようなスクロールをするのだな…。画面の端にあたるとバウンドするあたりとか。
PCのようなスクロールバーにはならないのだろうか、と思ってググってみたら、scroll_type とやらを指定するといいようで。
_python - How can I control my Kivy scrollview by dragging the sliders? - Stack Overflow
一応、動作確認できたスクリプトも書いておく。
中ボタンドラッグでスクロールができたりしないかな…。でも、スマホ用を意識したライブラリっぽい気配もするから無理かな…。
以下のページが参考になった。ありがたや。
_Kivy ScrollViewの基本 - Qiita
kvファイル(レイアウトを指定するファイル)内で、ScrollView とやらで囲んでやればいいらしい。いくつか指定が必要になるらしいけど、随分簡単なのだなあ…。
手元の環境、Windows10 x64 1909 + Python 3.7.7 64bit + Kivy 1.11.1 で試してみたけれど、すんなり動いてくれた。
それはともかく、まるでスマホのようなスクロールをするのだな…。画面の端にあたるとバウンドするあたりとか。
PCのようなスクロールバーにはならないのだろうか、と思ってググってみたら、scroll_type とやらを指定するといいようで。
_python - How can I control my Kivy scrollview by dragging the sliders? - Stack Overflow
ScrollView: scroll_type: ['bars', 'content'] # scroll_type: ['bars'] bar_width: 16みたいな。'bars' を指定するとPCっぽくなるし、'content' を指定するとスマホっぽくなる模様。bar_width で、スクロールバーの太さを指定できる。
一応、動作確認できたスクリプトも書いておく。
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.config import Config from kivy.lang.builder import Builder Config.set('input', 'mouse', 'mouse,disable_multitouch') Builder.load_string(''' <MainScreen>: BoxLayout: size: root.size orientation: 'vertical' Label: size_hint_y: 0.1 text: "Label Text" Button: size_hint_y: 0.1 text: "Button Text" ScrollView: scroll_type: ['bars', 'content'] # scroll_type: ['bars'] bar_width: 16 BoxLayout: size_hint: None, None size: 1280+128,720+128 orientation: 'vertical' Image: size_hint: 1.0, 1.0 allow_stretch: False source: "./img2_1280x720.png" canvas.before: Color: rgba: 0.3, 0.3, 0.3, 1 Rectangle: size: self.size pos: self.pos ''') class MainScreen(BoxLayout): def __init__(self, **kwargs): super().__init__(**kwargs) class MainApp(App): def build(self): return MainScreen() if __name__ == "__main__": MainApp().run()1280x720 の img2_1280x720.png という画像を読み込んで表示する。画像内を左ボタンでドラッグしてもスクロールするし、スクロールバーをドラッグしてもスクロールする。
中ボタンドラッグでスクロールができたりしないかな…。でも、スマホ用を意識したライブラリっぽい気配もするから無理かな…。
[ ツッコむ ]
以上、1 日分です。