1
크기를 조정할 수있는 Scatter
위젯 두 개를 만들었습니다. 내가 찾고있는 것은 버튼을 누를 때마다 Scatter
위젯 (잠재적으로 최대 20-ish)을 스폰하는 방법입니다. 내가 작성하고 에 addfunction()
을 바인딩하려했지만 작동하지 않는 것 같습니다.kivy - 위젯의 추가 인스턴스를 생성하는 바인딩 단추?
나는 메시지가 표시 될 때 (이 공간을 점유 쇼하는 canvas
을 가지고 자식 위젯 Drawer
과 함께) Scatterer
위젯의 새로운 인스턴스를 생성 할 수있는 방법을 찾고 있어요.
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.scatter import Scatter
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
class Scatterer(Scatter):
pass
class Drawer(FloatLayout):
pass
class MainWindowWidget(FloatLayout):
def addfunction(*args):
root = MainWindowWidget()
s = Scatterer()
d = Drawer()
root.add_widget(s)
s.add_widget(d)
print("button is pressed")
class TestApp(App):
def build(self):
return MainWindowWidget()
if __name__ == '__main__':
TestApp().run()
내 .kv 파일 :
가 여기 내 파이썬 코드의
#:kivy 1.0.9
<MainWindowWidget>
Scatterer:
id: scatter2
size: 80, 80
Drawer:
size: scatter2.size
Scatterer:
id: scatter1
size: 80, 80
Drawer:
size: scatter1.size
Button:
text: 'press'
size_hint: None, None
size: 100, 100
pos: 100, 0
on_release: root.addfunction()
<Scatterer>:
do_rotation: False
size_hint: None, None
size: self.size
canvas.after:
Color:
rgba: 1, 1, 0, 0.5
Rectangle:
size: self.size
pos: self.pos
<Drawer>:
size: self.size
canvas:
Color:
rgba: 0, 1, 0, 0.3
Rectangle:
pos: self.pos
size: self.size
감사와 메소드의 선언을 대체 할'1,1' 때문에 나는's.size = 80, 80'와'd.size을 추가했다 = s.size' 내가 원하는 것을 얻으려면 – ivandaho