Еще раз возиться с kivy и сталкиваюсь с проблемами.
Как передать переменную (текст из счетчика) в кнопку всплывающего окна (она имеет две и должна быть выполнена на заказ) ИЛИ передать указанную переменную на другую страницу? Мне нужно это, чтобы запустить песню на пианино, остальные сценарии в основном все сделаны и работают.
Заранее спасибо, вот код всплывающего окна:
<Custpopup@Popup>:
size_hint: .8, .8
auto_dismiss: False
title: 'Play me a song'
BoxLayout:
spacing: 10
Button:
id: play
text: 'Play'
on_press:
# what to do here?
Button:
id: close
text: 'Close popup'
on_press:
root.dismiss()
print('closed')
Редактировать: Наименьшее воспроизводимое пример здесь: https://pastebin.com/y7sW8ByH
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.screenmanager import Screen,ScreenManager
from kivy.app import App
from os import listdir
DEBUG = False
Builder.load_string('''
<Custpopup@Popup>:
size_hint: .7, .6
auto_dismiss: False
title: 'Play me a song'
BoxLayout:
spacing: 10
Button:
id: play
text: 'Play'
on_press:
# what to do here?
Button:
id: close
text: 'Close popup'
on_press:
root.dismiss()
print('closed')
<JukeBoxMode>:
name: 'juke'
id: jukebox
FloatLayout:
id: layout
Button:
id: back
text: 'Return'
size_hint: None, None
size: 150, 44
pos: 0, layout.height - self.height
on_press: print('Pressed RETURN button')
on_release:
print(app.root.current)
Spinner:
id: spin
size_hint: None, None
size: 400, 44
pos: (layout.center_x - self.width/2, layout.height - self.height)
text: 'Music'
values: root.musicList
on_text:
root.selMus(self.text)
''')
class CustPopup(Popup):
pass
class JukeBoxMode(Screen):
musicList = []
musdir = r'/home/pi/Desktop/Music21/midi/'
muslist = listdir(musdir)
for file in muslist:
if file.endswith('.mid'):
musicList.append(file[:-4])
if DEBUG:
print(musicList)
musicList.sort()
if DEBUG:
print(musicList)
def selMus(self,sel):
custpop = CustPopup()
if sel != 'Music':
custpop.open()
def playPiano(self):
dicmusic = {self.musicList.index(self.ids['spin'].text): self.ids['spin'].text}
if DEBUG:
print(dicmusic)
song, fin, instr, seq = infoMorceau(dicmusic[0])
print(song, fin, instr, seq)
class HudPianoApp(App):
def build(self):
return JukeBoxMode()
if __name__ == '__main__':
HudPianoApp().run()