def __init__(self, view): layout = Layout(width="initial") self._step_backward = Button(tooltip="Step backward", icon="step-backward", layout=layout) self._step_forward = Button(tooltip="Step forward", icon="step-forward", layout=layout) self._begin = Button(tooltip="Begin", icon="fast-backward", layout=layout) self._end = Button(tooltip="End", icon="fast-forward", layout=layout) self._backward = Button(tooltip="Play backward", icon="backward", layout=layout) self._play = Button(tooltip="Play", icon="play", layout=layout) self._pause = Button(tooltip="Pause", icon="pause", layout=layout) self._frame_label = Label("frame: ") self._frame = Label("") self._speed_label = Label("speed: ") self._speed_slider = IntSlider(0, 0, 10, 1) player_controls = HBox([ self._begin, self._backward, self._step_backward, self._pause, self._play, self._step_forward, self._end, self._frame_label, self._frame, self._speed_label, self._speed_slider ]) VBox.__init__(self, [view, player_controls]) self._model = PlayerModel(view, self) self._controller = PlayerThread(self._model, self).start()
def __init__(self): self.niveau = Dropdown(options=[('Niveau {}'.format(i), i) for i in RushHour.niveaux()]) self.niveau.observe(lambda widget: self.change_niveau(widget.owner.value)) self.voiture = Dropdown(options=[]) self.modele = Plateau(1) self.vue = Figure(scale_x = LinearScale(min=0, max=self.modele.dimension), scale_y = LinearScale(min=self.modele.dimension, max=0)) self.vue.layout.width="75ex" self.vue.layout.width="75ex" self.vue.layout.height=self.vue.layout.width; self.vue.vue_voitures = {} for lettre, couleur in couleurs.items(): vue_voiture = Lines(x=[], y=[], scales={'x':self.vue.scale_x, 'y':self.vue.scale_y}, fill='inside', colors=[couleurs[lettre]], visible=False, tooltip=Tooltip(fields=["lettre"],show_labels=False), ) vue_voiture.lettre = "coucou" # lettre vue_voiture.on_click(lambda vue_voiture, _: self.choix_voiture(vue_voiture.lettre)) self.vue.vue_voitures[lettre] = vue_voiture self.vue.marks = list(self.vue.vue_voitures.values()) boutton_solution = Button(description="Solution") boutton_solution.on_click(self.montre_solution) VBox.__init__(self, [HBox([self.niveau, boutton_solution]), self.vue, self.boutton_direction('U'), HBox([self.boutton_direction('L'), self.voiture, self.boutton_direction('R')]), self.boutton_direction('D') ]) self.layout.align_items = 'center' self.change_niveau(1)
def __init__(self, database_path='./'): VBox.__init__(self, layout=Layout(width="100%", min_height="800px")) self.database_path = database_path dbs = Dropdown(description='DB', layout=Layout(width="auto")) dbs.observe(lambda event, this=self: this.loadFields(event), "value") self.current = "Database" layout = { "Database": { 'action': (lambda this=self: this.toDatabase()), 'click': (lambda event, this=self: this.clickPanel("Database")), 'children': { "list": dbs, "fields": VBox(layout=Layout(width="100%", border="1px solid #6666")) }, }, "Filters": { 'action': (lambda this=self: this.toFilters()), 'click': (lambda event, this=self: this.clickPanel("Filters")), 'children': { "grid": VBox() }, }, "Exploration": { 'action': (lambda this=self: this.toExploration()), 'click': (lambda event, this=self: this.clickPanel("Exploration")), 'children': { "grid": HBox() }, }, "Visualization": { 'action': (lambda this=self: this.toVisualization()), 'click': (lambda event, this=self: this.clickPanel("Visualization")), 'children': { "main_view": Output(), "secondary_view": Output() }, }, } self.ui = self.createDefaultLayout(layout) content = [] for i, k in enumerate(self.ui.keys()): if 'container' in self.ui[k]: content.append(self.ui[k]["container"]) tabs = [] for i, k in enumerate(self.ui.keys()): if 'container' in self.ui[k]: self.ui[k]["tab"] = ToggleButton(value=False, description=k, layout=Layout(width="auto"), disabled=True) self.ui[k]["tab"].observe( lambda a, b=k, c=self: self.eventPanel(a, b), "value") tabs.append(self.ui[k]["tab"]) self.children = [ HBox(tabs, layout=Layout(width="auto")), VBox(content, layout=Layout(width="auto")) ] self.clickPanel(self.current)
def __init__(self, obj, adapter=None, display_convention='en', cell_layout=None, cell_widget_classes=[TextCell], cell_widget_class_index=lambda x: 0, css_classes=[], css_class_index=None, blank_widget_class=BlankCell, addable_widget_class=AddableTextCell): r""" Grid View Widget initialization. INPUT: - ``cell_widget_classes``: a list of classes for building cell widgets - ``blank_widget_class``: a widget class for building blank cells - ``addable_widget_class``: a widget class for building blank cells TESTS :: sage: from sage_combinat_widgets.grid_view_widget import * sage: t = StandardTableaux(15).random_element() sage: w = GridViewWidget(t) sage: from sage.graphs.generators.families import AztecDiamondGraph sage: az = AztecDiamondGraph(4) sage: w = GridViewWidget(az, cell_widget_classes=[ButtonCell], blank_widget_class=BlankButton) Compatibility with `@interact`: the widget should be a :class:`ipywidgets.ValueWidget` and have a description field:: sage: isinstance(w, ValueWidget) True sage: w.description "Grid view widget for Jupyter notebook with cell class '<class 'sage_combinat_widgets.grid_view_widget.ButtonCell'>', for object 'Subgraph of (2D Grid Graph for [8, 8])'" Basic compabitility test:: sage: def f(x = w): return az.average_distance() sage: f = interact(f) Interactive function <function f at ...> with 1 widget x: GridViewWidget(value=Aztec Diamond graph of order 4, ...) """ GridViewEditor.__init__(self, obj, adapter) VBox.__init__(self) self._model_id = get_model_id(self) self.display_convention = display_convention self.description = "Grid view widget for Jupyter notebook with cell class '%s', for object '%s'" % ( cell_widget_classes[0], obj) if not cell_layout: if issubclass(self.value.__class__, GenericGraph): # i.e. a graph cell_layout = buttoncell_smaller_layout else: cell_layout = textcell_layout self.cell_layout = cell_layout self.cell_widget_classes = cell_widget_classes self.cell_widget_class_index = cell_widget_class_index self.css_classes = css_classes self.css_class_index = css_class_index or cell_widget_class_index or ( lambda x: 0) try: self.displaytype = cell_widget_classes[0].displaytype except: self.displaytype = None # Stateless cells self.cast = lambda x: self.adapter.display_to_cell(x, self.displaytype) self.blank_widget_class = blank_widget_class self.addable_widget_class = addable_widget_class self.draw() self.donottrack = False
def __init__(self, player): self.widget = ipywidgets.HTML( value="", placeholder='', description='', ) output = ipywidgets.Output() self.player = player # les méthodes suivantes définissent les actions réaliser par les boutons correspondants def fast_backward_clicked(b): with output: self.player.begin() self.player.pause() def backward_clicked(b): with output: self.player.backward() def step_backward_clicked(b): with output: self.player.pause() self.player.step_backward() def pause_clicked(b): with output: self.player.pause() def step_forward_clicked(b): with output: self.player.pause() self.player.step_forward() def play_clicked(b): with output: self.player.play() def fast_forward_clicked(b): with output: self.player.pause() self.player.end() #créer un slider de vitesse slider = ipywidgets.FloatSlider(value=1.0, min=0.0, max=6.0, step=1, description="Speed:") #observe le changement du slider vitesse et appel set_fps def on_value_change(change): value = int(change['new']) self.player.set_fps(2**value) #création des boutons du widget et liaison des méthodes et des boutons slider.observe(on_value_change, names='value') play = ipywidgets.Button(description="", icon='fa-play', layout=Layout(width='35px')) fast_backward = ipywidgets.Button(description="", icon='fa-fast-backward', layout=Layout(width='35px')) backward = ipywidgets.Button(description="", icon='fa-backward', layout=Layout(width='35px')) step_backward = ipywidgets.Button(description="", icon='fa-step-backward', layout=Layout(width='35px')) pause = ipywidgets.Button(description="", icon='fa-pause', layout=Layout(width='35px')) step_forward = ipywidgets.Button(description="", icon='fa-step-forward', layout=Layout(width='35px')) fast_forward = ipywidgets.Button(description="", icon='fa-fast-forward', layout=Layout(width='35px')) play.on_click(play_clicked) fast_backward.on_click(fast_backward_clicked) backward.on_click(backward_clicked) step_backward.on_click(step_backward_clicked) pause.on_click(pause_clicked) step_forward.on_click(step_forward_clicked) fast_forward.on_click(fast_forward_clicked) self.player = player self.player.reset(self.player.view.value) #méthode qui gère le message afficher def fctOut(slid_time): print(self.player.history[slid_time].message) out = widgets.interactive_output( fctOut, {"slid_time": self.player.slider_time}) self.affichage = ipywidgets.HBox([ fast_backward, backward, step_backward, pause, step_forward, play, fast_forward, self.player.slider_time, slider ]) VBox.__init__(self, [self.player.view, self.affichage, out])
def __init__(self, player): self.widget = ipywidgets.HTML( value="", placeholder='', description='', ) output = ipywidgets.Output() self.player = player def fast_backward_clicked(b): with output: self.player.begin() self.player.pause() def backward_clicked(b): with output: self.player.backward() def step_backward_clicked(b): with output: self.player.pause() self.player.step_backward() def pause_clicked(b): with output: self.player.pause() def step_forward_clicked(b): with output: self.player.pause() self.player.step_forward() def play_clicked(b): with output: self.player.play() def fast_forward_clicked(b): with output: self.player.pause() self.player.end() # self.slider_time=ipywidgets.IntSlider( # value=0, # min=0, # max=len(self.player.history), # step=1, # description="time:" # ) slider = ipywidgets.FloatSlider(value=1.0, min=0.0, max=6.0, step=1, description="Speed:") # 2puissance speed affiché ou alors nous affiché juste la valeur et pas "speed " 2** = puissance def on_value_change(change): value = int(change['new']) self.player.set_fps(2**value) slider.observe(on_value_change, names='value') play = ipywidgets.Button(description="", icon='play', layout=Layout(width='35px')) fast_backward = ipywidgets.Button(description="", icon='fast-backward', layout=Layout(width='35px')) backward = ipywidgets.Button(description="", icon='backward', layout=Layout(width='35px')) step_backward = ipywidgets.Button(description="", icon='step-backward', layout=Layout(width='35px')) pause = ipywidgets.Button(description="", icon='pause', layout=Layout(width='35px')) step_forward = ipywidgets.Button(description="", icon='step-forward', layout=Layout(width='35px')) fast_forward = ipywidgets.Button(description="", icon='fast-forward', layout=Layout(width='35px')) play.on_click(play_clicked) fast_backward.on_click(fast_backward_clicked) backward.on_click(backward_clicked) step_backward.on_click(step_backward_clicked) pause.on_click(pause_clicked) step_forward.on_click(step_forward_clicked) fast_forward.on_click(fast_forward_clicked) self.affichage = ipywidgets.HBox([ fast_backward, backward, step_backward, pause, step_forward, play, fast_forward, slider ]) VBox.__init__( self, [self.player.view, self.player.slider_time, self.affichage]) #link((self.slider_time,'value'),(self.player,'time')) #self.widget_affichage=VBox([self.player.view,self.slider_time,self.affichage]) #self.player.time=0 self.player = player