问题:我如何放置一个
Scatter
在另一个内部
分散
?
我对kivy的坐标有些问题。原则上我想
分散
在a中
分散
。它们应该是可拖动的(移动第一个散点移动所有内容,移动第二个散点将第二个散点移动到第一个散点内)。
混凝土设置
-
我想有一个可缩放和可移动的底图(散点图1)。当我们变换此地图时,在此地图“顶部”绘制的所有内容也应变换(s.t.它保持其在地图上的位置)。
-
然后我想在地图的顶部绘制一个网格,它可以自己移动(散点2)。
-
然后我在散点2上加上一些点。
-
重新缩放窗口时,必须保留相对位置。
预期行为
当我抓取散点2时,它可以四处移动和点(3)保持相对于散布2。当我抓取散点1时,它应该移动所有s.t.散点2,并且点保持在地图上的位置(散点1)。
基本示例代码
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
kv = """
<MyRoot>:
orientation: 'vertical'
ActionBar:
ActionView:
ActionPrevious:
title: ''
with_previous: True
ActionOverflow:
ActionButton:
text: 'Preferences'
on_press: app.open_settings()
Scatter:
canvas:
Color:
rgb: .2, .2, .3
Rectangle:
pos: self.pos
size: self.size
Scatter:
canvas:
Color:
rgb: .8, .2, .3
Rectangle:
pos: self.pos
size: self.size
Widget:
pos: 200, 200
canvas:
Color:
rgb: .1, .7, .3
Ellipse:
pos: 30,50
size: 10, 10
"""
Builder.load_string(kv)
class MyApp(App):
def build(self):
return MyRoot()
class MyRoot(BoxLayout):
pass
if __name__ == '__main__':
MyApp().run()
这里还有正在发生的事情的图像。我想将绿点固定在红色散点上,红色散点位于紫色散点内:
方法
我想我必须在每个步骤中转换坐标并覆盖函数
on_touch_...
,可能使用
self.parent.to_parent(*touch.pos)
但不幸的是,我没能把所有的东西都拼凑起来。
谢谢你的帮助!