Я пытаюсь создать кнопку для изменения / возврата к предыдущему экрану внутри карусели.
Я привык управлять кнопками в файле .kv, но для карусели это невозможно, если я сделаю так, чтобы на последнем слайде была создана только одна кнопка.
Мне нужно, чтобы кнопка присутствовала на каждом слайде, поэтому я сделал это, и она работает хорошо, за исключением того, что я не знаю, как связать кнопку с ScreenManager.
Часть моего файла python:
class MyCarousel(Carousel):
def __init__(self, **kwargs):
super(MyCarousel, self).__init__(**kwargs)
self.direction = "right"
log_file = open_logfile()
for i in range(log_file['len']):
src = log_file['path'][(log_file['len']) - (i + 1)] + "_file_resize.jpg"
button = Button(size_hint=(.15,.25),\
pos_hint={'center_x': .05, 'y': .65},\
background_color=(1, 1, 1, 1),\
border=(0, 0, 0, 0),\
on_release=***???***
background_normal="Interface_PNG/bouton/Bouton_retour.png",\
background_down="Interface_PNG/bouton/Bouton_retour_fonce.png")
image = AsyncImage(source=src, allow_stretch=True, size_hint=(1, 1), pos_hint={'center_x': .5, 'y': 0})
layout = FloatLayout()
layout.add_widget(image)
layout.add_widget(button)
self.add_widget(layout)
self.loop = True
class StartScreen(Screen):
pass
class GalleryPhoto(Screen):
def call_next(self, dt):
self.manager.current = "start"
class RootScreen(ScreenManager):
pass
class PhotoboothApp(App):
def build(self):
sm = RootScreen()
self.start_screen = StartScreen()
self.gallery_photo = GalleryPhoto()
sm.add_widget(self.start_screen)
sm.add_widget(self.gallery_photo)
return sm
Часть моего файла kv:
<StartScreen>:
name: "start"
canvas.before:
Rectangle:
pos: self.pos
size: self.size
FloatLayout:
Image:
source: "Interface_PNG/Page_1.png"
allow_stretch : True
keep_ratio : False
size_hint: 1, 1
Button:
background_color: 0, 0, 0, 0
on_release: root.manager.current = "gallery"
<GalleryPhoto>:
name: "gallery"
FloatLayout:
Image:
source: "Interface_PNG/Page_8.png"
allow_stretch: True
keep_ratio: False
size_hint: 1, 1
MyCarousel:
Я бы хотел сделать что-то подобное, но на python:
MyCarousel:
Button:
on_release: root.manager.current = "start"
Я думаю, это просто, но я немного растерялся ... Любая помощь приветствуется.