class Example1(App): def build(self): self.additional_init() self.carousel = Carousel( direction='right', loop=True) for src in k.filenames: image = Factory.AsyncImage(source=src, allow_stretch=True) self.carousel.add_widget(image) return self.carousel def additional_init(self): self._keyboard = Window.request_keyboard(self._keyboard_closed, self, 'text') self._keyboard.bind(on_key_down=self._on_keyboard_down) def _keyboard_closed(self): print('My keyboard have been closed!') self._keyboard.unbind(on_key_down=self._on_keyboard_down) self._keyboard = None def _print_debug(self, keycode, text, modifiers): print('The key', keycode, 'have been pressed') print(' - text is %r' % text) print(' - modifiers are %r' % modifiers) def _on_keyboard_down(self, keyboard, keycode, text, modifiers): self._print_debug(keycode, text, modifiers) # If we hit escape, release the keyboard k = keycode[1] if k == 'escape': keyboard.release() if k == 'right': self.carousel.load_next() pass if k == 'left': self.carousel.load_previous() pass return True
class MainScreen(BoxLayout): def __init__(self, **kwargs): super(MainScreen, self).__init__(**kwargs) self.orientation = 'vertical' title = TitleBar() self.carousel = Carousel(direction='right', loop=False) self.spacing=10 dico = Dictionary() self.carousel.add_widget(dico) self.m = MainMenu() self.m.convert_button.bind(on_release=self.convert) self.m.dictionary_button.bind(on_release=self.dictionary) self.carousel.add_widget(self.m) self.carousel.load_slide(self.m) self.textEntry = TextEntry() self.textEntry.paragraph_button.bind(on_press=self.convert_paragraph) self.carousel.add_widget(self.textEntry) self.result = ResultEntry() self.result.back.bind(on_press=self.back) self.carousel.add_widget(self.result) self.add_widget(title) self.add_widget(self.carousel) def convert(self, object): self.carousel.load_next() def dictionary(self, object): self.carousel.load_previous() def back(self, object): self.carousel.load_slide(self.m) def convert_paragraph(self, object): old_text = self.textEntry.paragraph.text new_text = politically_correct.polit_changer(old_text) self.result.paragraph.text = new_text self.carousel.load_next()
def __init__(self, **kwargs): super(ArticleCarouselContainer, self).__init__(**kwargs) c = Carousel(direction="right") for src in active_sources: c.add_widget(ScrollContainer(src=src)) f = BoxLayout(size_hint=(1, 0.1)) b1 = Button(text='previous source') f.add_widget(b1) b2 = Button(text='next source') f.add_widget(b2) self.add_widget(f) self.add_widget(c) b1.bind(on_press=lambda x: c.load_previous()) b2.bind(on_press=lambda x: c.load_next())
class Build_CloudWatch_Remote ( App ): Period_Buttons = [] Period_End_Buttons = [] Period_Value = 24 Period_End_Value = 0 def __init__(self, **kwargs): super(Build_CloudWatch_Remote, self).__init__(**kwargs) Window.bind(on_key_down=self.on_keyboard_down) # Window.size = (1280, 800) # Automatically size widget images to fit screen real estate horizontal_size, vertical_size = Window.size # print ("h:", horizontal_size, "v:", vertical_size) for widget_descriptor in widget_descriptor_list: widget_descriptor["width"] = horizontal_size if (cw_remote_duplex_layout): widget_descriptor["height"] = int(round(vertical_size * 0.475)) else: widget_descriptor["height"] = int(round(vertical_size * 2 * 0.475)) def build(self): Get_CloudWatch_Graphs() self.CloudWatch_Remote = BoxLayout(orientation='vertical') self.Control_Bar = BoxLayout(orientation='horizontal', size_hint=(1, 0.05)) # self.Begin_Time_Slider = \ # Slider_Extended(min=-24, max=-1, value=-24, step=1, size_hint=(0.40, 1)) # self.Begin_Time_Slider.bind(value=self.on_begin_time_value_change) # self.Begin_Time_Slider.bind(on_release=self.update) # self.Begin_Time_Label = \ # Label(text=(str(int(round(self.Begin_Time_Slider.value))) + "H"), # size_hint=(0.05, 1)) self.Period_Label = Label(text=(str(self.Period_Value) + "H"), size_hint=(0.05, 1)) # self.Control_Bar.add_widget(self.Begin_Time_Label) self.Control_Bar.add_widget(self.Period_Label) # self.Control_Bar.add_widget(self.Begin_Time_Slider) for button_idx, button_value in enumerate([120, 96, 72, 48, 24, 20, 16, 12, 8, 6, 5, 4, 3, 2, 1]): period_button = Button(text=str(button_value)) period_button.font_size = 14 period_button.size_hint = (0.0375, 1) period_button.bind(on_press=partial(self.on_set_period, button_idx, button_value)) self.Period_Buttons.append(period_button) self.Control_Bar.add_widget(period_button) button_refresh = Button(text="Refresh", size_hint=(0.075, 1)) button_refresh.font_size = 14 button_refresh.bind(on_press=self.update) self.Control_Bar.add_widget(button_refresh) for button_idx, button_value in enumerate([-72, -48, -36, -24, -12, -10, -8, -6, -5, -4, -3, -2, -1, 0]): # -96, end_button = Button(text=str(button_value)) end_button.font_size = 14 end_button.size_hint = (0.0375, 1) end_button.bind(on_press=partial(self.on_set_period_end, button_idx, button_value)) self.Period_End_Buttons.append(end_button) self.Control_Bar.add_widget(end_button) # self.End_Time_Slider = \ # Slider_Extended(min=-23, max=0, value=0, step=1, size_hint=(0.40, 1)) # self.End_Time_Slider.bind(value=self.on_end_time_value_change) # self.End_Time_Slider.bind(on_release=self.update) # self.End_Time_Label = \ # Label(text=(str(int(round(self.End_Time_Slider.value))) + "H"), # size_hint=(0.05, 1)) self.Period_End_Label = Label(text=(str(self.Period_End_Value) + "H"), size_hint=(0.05, 1)) # self.Control_Bar.add_widget(self.End_Time_Slider) # self.Control_Bar.add_widget(self.End_Time_Label) self.Control_Bar.add_widget(self.Period_End_Label) if (cw_remote_duplex_layout): self.Upper_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, 0.475)) self.Lower_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, 0.475)) self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture)) self.Lower_Widget_Box.add_widget(Image(texture=ci_widget_image_list[1].texture)) self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box) self.CloudWatch_Remote.add_widget(self.Control_Bar) self.CloudWatch_Remote.add_widget(self.Lower_Widget_Box) elif (len(widget_descriptor_list) > 1): self.Carousel_Widget = Carousel(direction='bottom') for ci_widget_image in ci_widget_image_list: self.Carousel_Widget.add_widget(Image(texture=ci_widget_image.texture)) self.CloudWatch_Remote.add_widget(self.Control_Bar) self.CloudWatch_Remote.add_widget(self.Carousel_Widget) else: self.Upper_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, (2 * 0.475))) self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture)) self.CloudWatch_Remote.add_widget(self.Control_Bar) self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box) if (cw_remote_refresh_interval_seconds >= 1): Clock.schedule_interval(self.update, cw_remote_refresh_interval_seconds) return self.CloudWatch_Remote def on_set_period(self, button_index, button_value, *args): self.Period_Value = button_value self.Period_Label.text = str(self.Period_Value) + "H" self.update_period_start_end() def on_set_period_end(self, button_index, button_value, *args): self.Period_End_Value = button_value self.Period_End_Label.text = str(self.Period_End_Value) + "H" self.update_period_start_end() def update_period_start_end(self): for widget_descriptor in widget_descriptor_list: widget_descriptor["start"] = "-PT" + str(abs(self.Period_Value) + abs(self.Period_End_Value)) + "H" widget_descriptor["end"] = "-PT" + str(abs(self.Period_End_Value)) + "H" self.update() # def on_begin_time_value_change(self, instance, begin_value, *args): # relative_start_time_value = int(round(begin_value)) # if (relative_start_time_value >= int(round(self.End_Time_Slider.value))): # relative_start_time_value = int(round(self.End_Time_Slider.value)) - 1 # self.Begin_Time_Slider.value = relative_start_time_value # for widget_descriptor in widget_descriptor_list: # widget_descriptor["start"] = "-PT" + str(abs(relative_start_time_value)) + "H" # self.Begin_Time_Label.text = str(relative_start_time_value) + "H" # # def on_end_time_value_change(self, instance, end_value, *args): # relative_end_time_value = int(round(end_value)) # if (relative_end_time_value <= int(round(self.Begin_Time_Slider.value))): # relative_end_time_value = int(round(self.Begin_Time_Slider.value)) + 1 # self.End_Time_Slider.value = relative_end_time_value # for widget_descriptor in widget_descriptor_list: # widget_descriptor["end"] = "-PT" + str(abs(relative_end_time_value)) + "H" # self.End_Time_Label.text = str(relative_end_time_value) + "H" def update(self, *args): Get_CloudWatch_Graphs() if (cw_remote_duplex_layout): self.Upper_Widget_Box.clear_widgets() self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture)) self.Lower_Widget_Box.clear_widgets() self.Lower_Widget_Box.add_widget(Image(texture=ci_widget_image_list[1].texture)) elif (len(widget_descriptor_list) > 1): self.Carousel_Widget.clear_widgets() for ci_widget_image in ci_widget_image_list: self.Carousel_Widget.add_widget(Image(texture=ci_widget_image.texture)) else: self.Upper_Widget_Box.clear_widgets() self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture)) self.CloudWatch_Remote.canvas.ask_update() def on_keyboard_down(self, instance, keyboard, keycode, text, modifiers): # print("\nThe key", keycode, "have been pressed") # print(" - text is %r" % text) # print(" - modifiers are %r" % modifiers) # Support keyboard control of carousel on OS-X if ((keycode == 81) or (keycode == 79)): self.Carousel_Widget.load_next() elif ((keycode == 82) or (keycode == 80)): self.Carousel_Widget.load_previous()
class Build_CloudWatch_Remote(App): def __init__(self, **kwargs): super(Build_CloudWatch_Remote, self).__init__(**kwargs) Window.bind(on_key_down=self.on_keyboard_down) # Window.size = (1280, 800) # Automatically size widget images to fit screen real estate horizontal_size, vertical_size = Window.size # print ("h:", horizontal_size, "v:", vertical_size) for widget_descriptor in widget_descriptor_list: widget_descriptor["width"] = horizontal_size if (cw_remote_duplex_layout): widget_descriptor["height"] = int(round(vertical_size * 0.475)) else: widget_descriptor["height"] = int( round(vertical_size * 2 * 0.475)) def build(self): Get_CloudWatch_Graphs() self.CloudWatch_Remote = BoxLayout(orientation='vertical') self.Control_Bar = BoxLayout(orientation='horizontal', size_hint=(1, 0.05)) self.Begin_Time_Slider = \ Slider_Extended(min=-24, max=-1, value=-24, step=1, size_hint=(0.40, 1)) self.Begin_Time_Slider.bind(value=self.on_begin_time_value_change) self.Begin_Time_Slider.bind(on_release=self.update) self.Begin_Time_Label = \ Label(text=(str(int(round(self.Begin_Time_Slider.value))) + "H"), size_hint=(0.05, 1)) self.Control_Bar.add_widget(self.Begin_Time_Label) self.Control_Bar.add_widget(self.Begin_Time_Slider) button_refresh = Button(text="Refresh", size_hint=(0.1, 1)) button_refresh.bind(on_press=self.update) self.Control_Bar.add_widget(button_refresh) self.End_Time_Slider = \ Slider_Extended(min=-23, max=0, value=0, step=1, size_hint=(0.40, 1)) self.End_Time_Slider.bind(value=self.on_end_time_value_change) self.End_Time_Slider.bind(on_release=self.update) self.End_Time_Label = \ Label(text=(str(int(round(self.End_Time_Slider.value))) + "H"), size_hint=(0.05, 1)) self.Control_Bar.add_widget(self.End_Time_Slider) self.Control_Bar.add_widget(self.End_Time_Label) if (cw_remote_duplex_layout): self.Upper_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, 0.475)) self.Lower_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, 0.475)) self.Upper_Widget_Box.add_widget( Image(texture=ci_widget_image_list[0].texture)) self.Lower_Widget_Box.add_widget( Image(texture=ci_widget_image_list[1].texture)) self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box) self.CloudWatch_Remote.add_widget(self.Control_Bar) self.CloudWatch_Remote.add_widget(self.Lower_Widget_Box) elif (len(widget_descriptor_list) > 1): self.Carousel_Widget = Carousel(direction='bottom') for ci_widget_image in ci_widget_image_list: self.Carousel_Widget.add_widget( Image(texture=ci_widget_image.texture)) self.CloudWatch_Remote.add_widget(self.Control_Bar) self.CloudWatch_Remote.add_widget(self.Carousel_Widget) else: self.Upper_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, (2 * 0.475))) self.Upper_Widget_Box.add_widget( Image(texture=ci_widget_image_list[0].texture)) self.CloudWatch_Remote.add_widget(self.Control_Bar) self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box) if (cw_remote_refresh_interval_seconds >= 1): Clock.schedule_interval(self.update, cw_remote_refresh_interval_seconds) return self.CloudWatch_Remote def on_begin_time_value_change(self, instance, begin_value, *args): relative_start_time_value = int(round(begin_value)) if (relative_start_time_value >= int(round( self.End_Time_Slider.value))): relative_start_time_value = int(round( self.End_Time_Slider.value)) - 1 self.Begin_Time_Slider.value = relative_start_time_value for widget_descriptor in widget_descriptor_list: widget_descriptor["start"] = "-PT" + str( abs(relative_start_time_value)) + "H" self.Begin_Time_Label.text = str(relative_start_time_value) + "H" def on_end_time_value_change(self, instance, end_value, *args): relative_end_time_value = int(round(end_value)) if (relative_end_time_value <= int(round( self.Begin_Time_Slider.value))): relative_end_time_value = int(round( self.Begin_Time_Slider.value)) + 1 self.End_Time_Slider.value = relative_end_time_value for widget_descriptor in widget_descriptor_list: widget_descriptor["end"] = "-PT" + str( abs(relative_end_time_value)) + "H" self.End_Time_Label.text = str(relative_end_time_value) + "H" def update(self, *args): Get_CloudWatch_Graphs() if (cw_remote_duplex_layout): self.Upper_Widget_Box.clear_widgets() self.Upper_Widget_Box.add_widget( Image(texture=ci_widget_image_list[0].texture)) self.Lower_Widget_Box.clear_widgets() self.Lower_Widget_Box.add_widget( Image(texture=ci_widget_image_list[1].texture)) elif (len(widget_descriptor_list) > 1): self.Carousel_Widget.clear_widgets() for ci_widget_image in ci_widget_image_list: self.Carousel_Widget.add_widget( Image(texture=ci_widget_image.texture)) else: self.Upper_Widget_Box.clear_widgets() self.Upper_Widget_Box.add_widget( Image(texture=ci_widget_image_list[0].texture)) self.CloudWatch_Remote.canvas.ask_update() def on_keyboard_down(self, instance, keyboard, keycode, text, modifiers): # print("\nThe key", keycode, "have been pressed") # print(" - text is %r" % text) # print(" - modifiers are %r" % modifiers) # Support keyboard control of carousel on OS-X if ((keycode == 81) or (keycode == 79)): self.Carousel_Widget.load_next() elif ((keycode == 82) or (keycode == 80)): self.Carousel_Widget.load_previous()
class CarouselApp(App): def myChange(self, instance, value): print(self.carousel.index + 1) pass def build(self): global page self.window = FloatLayout() self.carousel = Carousel(direction='right') self.carousel.bind(on_touch_move=self.myChange) self.carousel.scroll_distance = 1 self.carousel.scroll_timeout = 999 self.layout = [] # carousel for i in range(10): self.layout.append( FloatLayout(size_hint=(1, .55), pos_hint={ 'x': 0, 'y': .4 })) source = f'{i}.jpg' self.image = Image(source=source, pos_hint={ 'center_x': .5, 'center_y': .4 }) self.myText = Label(text=page[i], halign='center', valign='top', text_size=[_WIDTH, 100], pos_hint={ 'x': 0, 'y': -.8 }, color='#4B0082') self.layout[i].add_widget(self.image) self.layout[i].add_widget(self.myText) self.carousel.add_widget(self.layout[i]) # window self.btn_next = Button(text='Далее', size_hint=(.455, .08), pos_hint={ 'center_x': .745, 'center_y': .1 }, on_release=self.evt_btn_next) self.btn_pre = Button(text='Назад', size_hint=(.455, .08), pos_hint={ 'center_x': .255, 'center_y': .1 }, on_release=self.evt_btn_pre) self.window.add_widget(self.carousel) self.window.add_widget(self.btn_pre) self.window.add_widget(self.btn_next) return self.window def evt_btn_next(self, instance): self.carousel.load_next(mode='next') def evt_btn_pre(self, instance): self.carousel.load_previous()
class ImgCarousel(AnchorLayout): def __init__(self, **kwargs): super().__init__(**kwargs) # padding: [padding_left, padding_top, padding_right, padding_bottom] self.padding=("0dp", "50dp", "0dp", "10dp") self.carousel = Carousel(direction='right') #self.carousel.pos_hint = {"top":.9} for i in range(10): src = "https://i.imgur.com/x7WdmHBb.jpg" image = AsyncImage(source=src, allow_stretch=True) self.inner_carousel_layout = MDRelativeLayout() self.prev_btn = MDIconButton(icon="menu-left", user_font_size ="200sp", on_release = lambda x:self.carousel.load_previous(), pos_hint={"center_x":.1, "center_y":.5}) # pos_hint={"left":.2, "y":.5}, self.next_btn = MDIconButton(icon="menu-right", user_font_size ="200sp", on_release = lambda x:self.carousel.load_next(), pos_hint={"center_x":.9, "center_y":.5}) # pos_hint={"right":.8, "y":.5} self.inner_carousel_layout.add_widget(image) self.inner_carousel_layout.add_widget(self.prev_btn) self.inner_carousel_layout.add_widget(self.next_btn) self.carousel.add_widget(self.inner_carousel_layout) self.add_widget(self.carousel)