Kivy Get Position of Widget in Scatter while moving it

久未见 提交于 2021-02-08 05:17:05

问题


I searched a lot for it bit i didn't find a solution. I would like to grab a widget in a kivy scatter and get the position of it each time i move it. So it could like so:

def onmove_in_scatter(args):
    x = args[0]
    y = args[1]
    print("You are currently here: "+str(x)+":"+str(y))

It's important that the function is called WHILE i move the widget.


回答1:


When I want to do something like this I override the on_touch_move.

Here is a full* working example. (just put a cat.png somewhere...)

import kivy
import datetime

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.factory import Factory
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.scatter import Scatter




Builder.load_string("""
<MyScatter>:
    id: cool
    #pos: 200, 200
    #size: 300,300
    Image:
        id: img
        source: "cat.png"
        allow_stretch:  True
        size: cool.size
<P>:
    MyScatter:


""")


class MyScatter(Scatter):


    def on_touch_move(self, touch): #magic time!!!!
        res =  super(MyScatter, self).on_touch_move(touch)
        if res: #Yay do something!
            print self.center
        return res
class P(FloatLayout):
    pass


class MyApp(App):


    def build(self):
        return P()


if __name__ == '__main__':
    MyApp().run()


来源:https://stackoverflow.com/questions/35463115/kivy-get-position-of-widget-in-scatter-while-moving-it

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!