Wielkie dzięki.
Takie tam wypociny. Pewnie można lepiej. Może się komuś przyda. Oczywiście to część większego projektu.
import kivy
from kivy.app import runTouchApp,stopTouchApp
from kivy.uix.textinput import TextInput
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.button import Button
def f_ForLay(wdg,event):
for child in wdg.children:
if child.collide_point(*event.pos):
return True
wdg.remove_widget(drpScrl)
return True
def f_ForTxt(twdg,event):
if drpScrl in layMain.children: return True
layMain.add_widget(drpScrl)
return True
def f_SetTxtToField(*data):
mnTxt.text=data[0].text
return None
def f_TxtToBtns(*data):
sTxtFrom=data[0].text
for child in drpLay.children:
if child.text==sTxtFrom:
print("Już istnieje!") # tu dam popupa z kivy
return None
btn=Button(text=sTxtFrom,size_hint=(1,None),height=60) #,pos_hint={'top':.94})
btn.bind(on_release=f_SetTxtToField)
drpLay.add_widget(btn)
data[0].text=""
return None
layMain=FloatLayout()
drpScrl=ScrollView(do_scroll_y=True,do_scroll_x=False,size_hint=(.5,.5),pos_hint={'top':.94})
drpLay=BoxLayout(orientation='vertical',size_hint=(1,None))
drpLay.bind(minimum_height=drpLay.setter('height')) # ### ### ### ### Important for scroll??!!
for x in range(5):
btn=Button(text="Btn "+str(x+1),size_hint=(1,None),height=60) #,pos_hint={'top':.94})
btn.bind(on_release=f_SetTxtToField)
drpLay.add_widget(btn)
drpScrl.add_widget(drpLay)
mnTxt=TextInput(multiline=False,size_hint=(.4,.06),pos_hint={'top':1})
mnTxt.bind(on_touch_up=f_ForTxt)
mnTxt.bind(on_text_validate=f_TxtToBtns)
layMain.bind(on_touch_up=f_ForLay)
layMain.add_widget(mnTxt)
runTouchApp(layMain)
Pozdrawiam
Radosław Głębicki