私は基本的に、散布図のサイズではなく、プログラムを表示しているウィンドウのサイズによって完全に定義されている唯一の「グラバブル」散布領域に関する問題に取り掛かります。ここでKivy散布領域はウィンドウサイズに制限されています
は、バグの作業例です:私の画面で
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.scatter import Scatter
class AppFrame(GridLayout):
def __init__(self,**kwargs):
super(AppFrame,self).__init__(**kwargs)
self.myscatter=Scatter(
width=2000,
height=200,
do_rotation=False,
do_scale=True,
do_translation=True)
self.add_widget(self.myscatter)
self.layout=GridLayout(cols=30,width=2000,height=200)
self.myscatter.add_widget(self.layout)
for i in range(300):
self.layout.add_widget(Button(text=str(i)))
class TestApp(App):
def build(self):
return AppFrame(cols=3)
if __name__ == '__main__':
TestApp().run()
、私は右(ボタンで増加する)に移動する散乱を使用している場合、私は何も過去のボタンをつかむことはできません〜10 -11。私の画面のサイズを変更すると、もう少し遠ざかることがあります。画面を小さくすると、グラブ可能な領域が縮小し、到達できなくなる可能性があります。どのように私はこれを解決することができますか?
私はAndroidエミュレータでKivy環境を使用していますので、かなり大きな画面があります。残念ながら、これを電話機に移動すると、画面サイズが大幅に縮小され、このバグによりスクロールが無効になります。
(。トップレベルのレイアウトは、メニューを追加するためである、それはバグを再作成する必要はありませんように、実際のメニューは、この例には含まれません)
私が把握しようとしている主なものは以下のとおりです。
- これはコードまたはAndroidのエミュレータでの問題ですか?
- コードに問題がある場合、修正することができますか?
- 解決できない場合はどうすればこの機能を利用できますか?
更新日: ジョージ・ボウからのコメントの後、私はスキャッターのBBOX内にある問題を切り分けました。作成時に、スキャッタボックスのサイズは2000x200です。ただし、ウィンドウの作成後は、800x600(ポップアップする画面のデフォルトサイズ)です。
わかりやすく、これを修正する方法を理解できません。任意のポイント(ボタン内)でスキャターの幅/高さを変更すると、平行移動/ズームが発生するたびにすぐに800x600にリセットされます。誰もが自動的にBboxのサイズをウインドウに自動的に変更させないようにする方法を知っていますか?
私はあなたの問題の答えを見つけることができませんでしたが、私は何かを見ました。ボタンは、表示可能な画面内にある場合にのみクリック可能で、外側にあるものはクリック可能ではありません。これを解決するには、スキャッタパラメータに 'do_collide_after_children = True'を追加すると、すべてのボタンがクリック可能になります。また、私が見たところでは、Scatter領域はButton領域上にあるということでした。私はそれが意図されているか、あなたが一致させることを望んでいないか分かりません。 –
これは実際に非常に役に立ちます。これは、スキャッタのバウンディングボックスの問題を絞り込んだものです。私は、ウィンドウが作成された後、スキャターのバウンディングボックスがウィンドウのサイズにリサイズされることを発見しました。つまり、__init__の間にバウンディングボックスを印刷すると、それは想定されるサイズで表示されますが、ボタンを押して印刷すると、はるかに小さくなります。 –