Im folgenden Code habe ich einen übergeordneten Gridlayout (hier als GRD bezeichnet) mit zwei Kinder -Widgets (FLT und SLT). Jedes Kind -Widget hat weitere Kinder -Widgets, von denen eines ein Drag_Behavior -Widget ist, das als Dragwid, ein Kind von FLT, bezeichnet wird. Ich kann den Dragwid durch den Bildschirm ziehen. Es wäre schön, wenn ich so viel von dem Widget darunter sehen könnte, aber das Wichtigste ist, dass das Dragwid das obere Widget ist (das, was Sie sehen), wo es immer ist. < /P>
#practice.py
class DragCirc(DragBehavior,Label):
pass
def __init__(self,**kwargs):
super(DragCirc,self).__init__(**kwargs)
def on_touch_down(self,touch):
if self.collide_point(*touch.pos):
print(self.parent)
if self.parent:
parent = self.parent
parent.remove_widget(self)
parent.add_widget(self)
return super().on_touch_down(touch)
class circ(Widget):
def __init__(self,clr,sze,pos,**kwargs):
super(circ,self).__init__(**kwargs)
self.rx=sze[0]
self.ry=sze[1]
self.clr = clr
self.posit = pos
def cir_build(self):
wid = Widget()
with wid.canvas:
Ellipse(pos =self.posit,size = (self.rx,self.ry))
Color(self.clr)
return wid
class practiceApp(App):
def __init__(self,**kwargs):
super(practiceApp,self).__init__(**kwargs)
def build(self):
Window.size = (750,750)
grd = GridLayout()
grd.cols = 1
bxl = BoxLayout()
bxl.pos = (Window.size[0]/2,Window.size[1]/2)
bxl.pos_hint = {'center_x':0.5,'center_y':0.5}
#flt.size_hint = .9,.9
sir = circ((.5,.7,.3,1),bxl.size,bxl.pos)
bxl.add_widget(sir.cir_build())
flt = FloatLayout()
flt.pos = (Window.size[0]/4,Window.size[1]/4)
flt.pos_hint = {'center_x':0.5,'center_y':0.5}
flt.size_hint = .9,.9
sirc=circ((1,1,0,0),flt.size,flt.pos)
wid = sirc.cir_build()
with wid.canvas:
Rectangle(pos=(25,25), size=wid.size)
Color(0,1,.1,1)
flt.add_widget(wid)
drgwid = DragCirc()
#grd.add_widget(flt)
#grd.add_widget(slt)
flt.add_widget(drgwid)
#print(grd.children)
grd.add_widget(flt)
grd.add_widget(bxl)
return grd
if __name__ == "__main__":
Builder.load_file('practice.kv')
practiceApp().run()
< /code>
Die KV -Datei lautet: < /p>
:
drag_rectangle: self.x, self.y, self.width, self.height
drag_timeout: 10000000
drag_distance: 0
text: 'Help Me'
size_hint: (0.25,0.2)
< /code>
Ich arbeite seit einiger Zeit an diesem Problem und habe kürzlich einige Referenzen gefunden, ähnlich wie
kivy: Bring Widget auf Front
.>
Platzieren Sie ein Kinder -Widget auf den Ziehen (Kivy) ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post