Witam forumowiczów.
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.dropdown import DropDown
from kivy.uix.filechooser import FileChooserController
from kivy.lang import Builder
class kivyApp(App):
def build(self):
kDrp=DropDown()
#kDrp.bind(on_release=lambda x="vv": self.kMenuBtn.text(x))
kMnBtn1=Button(text="Load",size_hint_y=None,height=40)
kMnBtn1.bind(on_release=lambda x=kMnBtn1: self.m_MenBtn(x,kDrp))
kDrp.add_widget(kMnBtn1)
kMnBtn2=Button(text="Save as",size_hint_y=None,height=40)
kMnBtn2.bind(on_release=lambda x=kMnBtn2: self.m_MenBtn(x,kDrp))
kDrp.add_widget(kMnBtn2)
#kMnBtnQ=Button(text="Quit",size_hint_y=None,height=40) ##### Dodanie trzeciego guziora i nic się nie pokazuje
#kMnBtnQ.bind(on_release=lambda x=kMnBtnQ: self.m_MenBtn(x,kDrp))
#kDrp.add_widget(kMnBtnQ)
kMenuBtn=Button(text="==",size_hint_y=0.1,size_hint_x=None)
#kMenuBtn.bind(on_release=lambda x: self.m_MenuOpen(kDrp)) ########## Jak zamknąć kDrp przez metodę
kMenuBtn.bind(on_release=kDrp.open) ##### Tak działa, ale nic nie można zrobić podczas otwierania
kTxt=TextInput(multiline=True)
kTxt.bind(text=self.m_kTxtInp_txtChange)
kGrid=GridLayout(rows=2)
kGrid.add_widget(kMenuBtn)
kGrid.add_widget(kTxt)
return kGrid
def m_MenuOpen(self,DrpDwn):
#self.kMenuBtn.text="vv"
print("tutaj",DrpDwn.open) # Pokazuje właściwą wartość kDrp jeśli przekażemy przez metodę w lambda
#DrpDwn.open(self.kDrp) ######## Nie działa
#DrpDwn.open(kDrp) ######## Nie działa
#DrpDwn.open() ######## Nie działa
pass
def m_kTxtInp_txtChange(self,wdg,value):
print(value)
return
def m_MenBtn(self,oWhat,oMenuToClose):
print(oWhat)
if oWhat.text=="Load":
print("Load")
oWhat.text="Loaded"
elif oWhat.text=="Save as": print("Save as")
#oMenuToClose.dismiss()
return
app = kivyApp()
app.run()
W komentarzach:
1 problem. Nie mogę dodać pozycji drop menu numer 3. Dwie działają. Trzy i nic sie nie pokazuje.
2 problem. Podczas otwierania drop down: kDrp, chcę zmienić tekst na kMenuBtn z '==' na 'vv' więc potrzebuję metody, która wywołana
otworzy dropdown i jednocześnie zmieni napis na kMenuBtn. Bo w lambdzie nie da się robić kilku rzeczy?
Pozdrawiam
Głębicki Radosław