python kivy sliders problem

0

Witam ponownie z kolejnym problemem kivy.

from kivy.app import runTouchApp,stopTouchApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.slider import Slider

def f_SliVal1(*data):
	print(data[0])
def f_SliVal2(*data):
	print(data[0])

lay=BoxLayout(orientation='horizontal')
sl1=Slider(orientation='vertical',min=0,max=100,step=1)
sl1.bind(on_touch_move=f_SliVal1)
sl2=Slider(orientation='vertical',min=0,max=100,step=1)
sl2.bind(on_touch_move=f_SliVal2)
lay.add_widget(sl1)
lay.add_widget(sl2)

runTouchApp(lay)

Minimalny program. Dlaczego ruszając dowolnym sliderem w funkcji pojawia się również adres drugiego obiektu Slider?
Jak uzyskać TYLKO ten poruszany? Gdzie popełniam błąd?

Pozdrawiam
Radosław Głębicki

0

Dla testu zrobiłem buttony w miejsce sliderów i tam jest ok.

sl1=Button(text='1')
sl1.bind(on_release=f_SliVal1)
sl2=Button(text='2')
sl2.bind(on_release=f_SliVal2)

O co tu biega?

0

Ok. Znalazłem rozwiązanie. Chyba to jest to.

from kivy.app import runTouchApp,stopTouchApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.slider import Slider
from kivy.uix.button import Button

def f_SliVal(*data):
	if data[1].grab_current!=None: # Wykluczam wszystkie dane które mają w sobie parametr grab_current ust. na None
		print(data[0].id)

lay=BoxLayout(orientation='horizontal')
lLst=['r','g','b','a']
for x in range(4):
	sli=Slider(orientation='vertical',min=0,max=100,step=1)
	sli.bind(on_touch_move=f_SliVal)
	sli.id=lLst[x]
	lay.add_widget(sli)

runTouchApp(lay)

Trochę nie rozumiem takiej komplikacji przy odbieraniu ruchu ad konkretnego slidera. W dokumentacji dotyczącej Slidera na kivy.org nic o tym nie ma.

Pozdrawiam
Radosław Głębicki

1 użytkowników online, w tym zalogowanych: 0, gości: 1