私のKivyアプリケーションのScrollViewの周りに境界線を描きたいと思います。問題は、ScrollViewの内容がウィジェット内に描画しているので、その境界線が重なってしまうことです。これらのいずれかが可能な解決策である場合
は、だから私は思ったんだけど:KivyのScrollViewsを扱う
- 私は、ウィジェットの境界の外描くことができますどのように?
キャンバス要素の一部をウィジェットの外に移動しようとすると、単にその部分が切り取られますが、これは驚くことではありません。おそらく私はこの外に別のウィジェットを作ってそれを描くことができたでしょうか? - どのようにしてScrollViewのコンテンツを制限できますか?では、スクロールの境界を変更することはできますか?私が意味することは、子どもたちがウィジェットのある点を越えて境界線に触れないようにすることではないということです。
問題を示すいくつかのテストコードがあります。これは少し修正された公式の例です。ボタンは、私はしたくないものですこれは、スクロール緑の境界線をオーバーラップ:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
Builder.load_string('''
<ScrollView>:
canvas:
Color:
rgba: 1, 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
Color:
rgba: 0, 1, 0, 1
Line:
points: self.x, self.y + self.height,\
self.x + self.width, self.y + self.height,\
self.x + self.width, self.y, self.x, self.y,\
self.x, self.y + self.height
width: 1.2
''')
class TestApp(App):
def build(self):
layout = GridLayout(cols=1, padding=10, spacing=10,
size_hint=(None, None), width=500)
layout.bind(minimum_height=layout.setter('height'))
for i in range(30):
btn = Button(text=str(i), size=(480, 40),
size_hint=(None, None))
layout.add_widget(btn)
root = ScrollView(size_hint=(None, None), size=(500, 320),
pos_hint={'center_x': .5, 'center_y': .5}, do_scroll_x=False)
root.add_widget(layout)
return root
TestApp().run()
はい、私は 'ScrollView'の外に描画したかったのです。私が外に線を描こうとしたとき、それは単に現れなかった。私は 'canvas.after'の解決策がちょうど私がそれをしたいのと同じように働いて以来、実際には今は重要ではないと思う。 – Leva7
うん、私の答えを更新しました:) – KeyWeeUsr