Platzieren Sie ein Kinder -Widget auf den Ziehen (Kivy)Python

Python-Programme
Anonymous
 Platzieren Sie ein Kinder -Widget auf den Ziehen (Kivy)

Post by Anonymous »

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
.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post