def __init__(self, retour_selection, titre, parent_scm, dict_eleves_par_groupe, **kwargs): self.titre = titre self.retour_selection = retour_selection self.parent_scm = parent_scm self.dict_eleves = dict_eleves_par_groupe self.dict_panneau_groupe = dict() super(Formation, self).__init__(**kwargs) for nom_groupe in self.dict_eleves.keys(): tb = TabbedPanelItem(text=nom_groupe) panneaugr = PanneauGroupe(self.dict_eleves[nom_groupe], nom_cours=titre) self.dict_panneau_groupe[nom_groupe] = panneaugr tb.add_widget(panneaugr) self.nb.add_widget(tb) fin = TabbedPanelItem(text='Terminer') self.panfin = PanneauFinFormation(self.terminaison, self.recapitulatif) fin.add_widget(self.panfin) fin.bind(on_release=self.panfin.update) self.nb.add_widget(fin) self.panneau_fin = fin retour = TabbedPanelHeader(text='Retour') retour.bind(on_release=self.retour) self.nb.add_widget(retour) self.panneau_retour = retour
def __init__(self, parentscm, nom_cours, **kwargs): self.nom_cours = nom_cours self.parentscm = parentscm super(CoursConsultationEvaluations, self).__init__(**kwargs) nb = TabbedPanel(cols=1, spacing=5, padding=5, do_default_tab=False) self.add_widget(nb) liste_groupes = formation_db.trouver_groupes_par_cours([nom_cours]) liste_modules = formation_db.trouver_modules_par_cours( formation_db.trouver_cours([nom_cours])) self.liste_obj_recap = list() for gr in liste_groupes: ce = ConsultationEvaluationsGroupe(parentscm, liste_modules, gr.participants, text=gr.__str__()) nb.add_widget(ce) self.liste_obj_recap.append(ce) retour = TabbedPanelHeader(text='Retour') retour.bind(on_release=self.retour) nb.add_widget(retour)
def build(self): tp = TabbedPanel() wid = Widget(size_hint=(0.9, 1)) slider = Slider(min=0, max=32, value=0, value_track=True, orientation='vertical', step=1.0, value_track_color=[1, 0, 0, 1], size_hint=(0.1, 1)) self.label_pattern = "Axis {} : {}" self.edit_label_pattern = "Edit Color {}. Keep Axis {} : Layer Index {}. Slide : {}" self.color_preview_data = None self.fileroot = Root() self.axis = 0 self.edit_axis = 1 self.slider_value = 0 self.layer_index = 0 self.load_file = 0 self.plot3d = Draw3DSurface() upper_layout = BoxLayout() upper_layout.add_widget(wid) upper_layout.add_widget(slider) self.label = Label( text=self.label_pattern.format(AxisList[self.axis], 0)) btn_load_lut1 = Button(text='Load LUT 1', on_press=partial(self.load_lut, wid, 1)) btn_load_lut2 = Button(text='Load LUT 2', on_press=partial(self.load_lut, wid, 2)) btn_showlayer = Button(text='Show LUT Layer', on_press=partial(self.show_lut_layer, wid)) btn_showplot = Button(text='Show 3D Plot', on_press=partial(self.show_3D_plot, wid)) btn_double = Button(text='Change Axis', on_press=partial(self.change_axis, wid)) btn_save_lut = Button(text='Save LUT', on_press=partial(self.save_lut, wid)) layout = BoxLayout(size_hint=(1, None), height=50) layout.add_widget(btn_load_lut1) layout.add_widget(btn_load_lut2) layout.add_widget(btn_showlayer) layout.add_widget(btn_showplot) layout.add_widget(btn_double) layout.add_widget(btn_save_lut) layout.add_widget(self.label) root = BoxLayout(orientation='vertical') root.add_widget(upper_layout) root.add_widget(layout) slider.bind(value=partial(self.onlutlayerchange, wid)) tp.default_tab_text = "Analysis" tp.background_color = (0, 0, 0, 1) tp.default_tab_content = root #Edit tab define th_text_head = TabbedPanelHeader(text='Edit') slider_layout = BoxLayout(size_hint=(1, 0.9)) color_wid = Widget(size_hint=(1, 0.1)) self.slider_list = [] for i in range(33): self.slider_list.append( Slider(min=0, max=1, value=0, value_track=False, orientation='vertical', cursor_size=(18, 18), step=0.000001, background_width=0)) for slider_item in self.slider_list: slider_layout.add_widget(slider_item) slider_item.bind(value=partial(self.oneditcolorvalue, color_wid)) edit_preview = BoxLayout(orientation='vertical', size_hint=(0.9, 1)) edit_preview.add_widget(slider_layout) edit_preview.add_widget(color_wid) edit_layout_upper = BoxLayout() c_slider = Slider(min=0, max=32, value=0, value_track=True, orientation='vertical', step=1.0, value_track_color=[1, 0, 0, 1], size_hint=(0.1, 1)) c_slider.bind(value=partial(self.onslidervaluechange, color_wid)) edit_layout_upper.add_widget(edit_preview) edit_layout_upper.add_widget(c_slider) edit_layout_lower = BoxLayout(size_hint=(1, None), height=50) btn_swap_axis = Button(text='Swap Axis', size_hint=(0.15, 1), on_press=partial(self.swap_axis, color_wid)) btn_apply_change = Button(text='Apply Change', size_hint=(0.15, 1), on_press=partial(self.apply_change)) self.edit_label = Label(text=self.edit_label_pattern.format( AxisList[self.edit_axis], AxisList[self.axis], 0, 0), size_hint=(0.5, 1)) edit_layout_lower.add_widget(btn_swap_axis) edit_layout_lower.add_widget(btn_apply_change) edit_layout_lower.add_widget(self.edit_label) edit_layout = BoxLayout(orientation='vertical') edit_layout.add_widget(edit_layout_upper) edit_layout.add_widget(edit_layout_lower) th_text_head.content = edit_layout tp.add_widget(th_text_head) th_text_head.bind( on_press=partial(self.edit_press_callback, color_wid)) return tp
def coin_page(self): mainview = ModalView(size_hint=(0.75, 0.75)) grid = GridLayout( rows=2, cols=1, padding=[10, 15, 10, 30] # left, top, right, bottom ) # Area to contain price graphs located at the top half of the screen. graph_box = BoxLayout(orientation="vertical", size_hint_y=0.5, size_hint_x=.6) # Will contain the alerts below graph - once user sets them alarm_box = GridLayout(cols=2, size_hint_x=1, size_hint_y=.5) # First row of alerts box contains current price. self.current_price = coin_gecko.get_crypto_fiat_price( cryptoCurrency=self.current_coin) live_price_text = 'The current price is $' \ + str(self.current_price) live_price_label = Label(text="", size_hint_x=.5) dummy_label = Label(text=live_price_text, size_hint_x=.5) alarm_box.add_widget(live_price_label) alarm_box.add_widget(dummy_label) # Second row of alerts box contains alerts input box set_alarm_label = Label(text='Set Target Price: ', size_hint_x=0.5) self.alarm_textinput = TextInput(multiline=False, size_hint_x=0.5) # method actioned to check text input self.alarm_textinput.bind(text=self.on_text) alarm_box.add_widget(set_alarm_label) alarm_box.add_widget(self.alarm_textinput) # Third row of alerts box to contain buttons to set alerts alarm_button_less_than = Button(text="<", size_hint_x=1) alarm_button_more_than = Button(text=">", size_hint_x=1) alarm_box.add_widget(alarm_button_less_than) alarm_box.add_widget(alarm_button_more_than) # methods called on press of third row buttons, and then alerts added to log alarm_button_less_than.bind(on_release=self.alert_callback_less_than) alarm_button_more_than.bind(on_release=self.alert_callback_more_than) # Fourth row of alerts box will contain the alerts log. # self.scroll_label = ScrollableLabel(size_hint_x=1) #shown as self.history in sentdex tutorial # how to use self for input/label while not using self for old alerts # existing alerts scrollable_label = ScrollableLabel(size_hint_x=1) # existing alerts alarm_box.add_widget(scrollable_label) # new alerts self.new_alerts_scrollable_label = ScrollableLabel(size_hint_x=1) alarm_box.add_widget(self.new_alerts_scrollable_label) self.price_chart() # Fourth row of alerts box continued graph_tabs = TabbedPanel(pos_hint={'center_x': .5, 'center_y': 1}) graph_tabs.default_tab_text = '24hr' graph_tabs.default_tab.bind = self.one_day_chart() graph_tabs.default_tab_content = self.graph # graph title seven_days_tab = TabbedPanelHeader(text='7 days') seven_days_tab.bind = self.seven_day_chart() seven_days_tab.content = self.graph graph_tabs.add_widget(seven_days_tab) # make the actual plots graph_box.add_widget(graph_tabs) grid.add_widget(graph_box) grid.add_widget(alarm_box) # grid.add_widget(scrollable_label) mainview.add_widget(grid) mainview.open() parsedatabase.check_alerts(scrollable_label)
class MainApp(App): def __init__(self): super(MainApp, self).__init__() self.x = .5 self.y = .5 self.tabs = TabPnl() self.tabs.default_tab_text = "Main" self.tabhdr = TabHdr(text='Graph') # Set up the amount of tallies to take in self.total = int() self.tally_mask_amt = int() self.tally_no_mask_amt = int() self.tally_take_w_mask_amt = int() self.tally_take_wo_mask_amt = int() self.total_txt = 'Total: ' self.mask_txt = 'Mask: ' self.no_mask_txt = 'No Mask: ' self.take_w_mask_txt = 'Take W Mask: ' self.take_wo_mask_txt = 'Take WO Mask: ' # Graph self.graph = None # Set up GUI self.total_lbl = None self.mask_lbl = None self.no_mask_lbl = None self.take_w_mask_lbl = None self.take_wo_mask_lbl = None self.tally_mask = None self.tally_no_mask = None self.tally_take_w_mask = None self.tally_take_wo_mask = None self.export_info = None # Get today's date _today = datetime.today() self.date = "{0}/{1}/{2}".format(_today.month, _today.day, _today.year) # Information to catalog self.analytics = { # Put in the format of tallies "Mask": [self.tally_mask_amt, {}], "NoMask": [self.tally_no_mask_amt, {}], "TookMask": [self.tally_take_w_mask_amt, {}], "WoMask": [self.tally_take_wo_mask_amt, {}], "Total": self.total } def build(self): _grid = GLayout(cols=1, rows=6) _box = BLayout(padding=10) _graph_box = BLayout(padding=10) _inside = GLayout(cols=2) _title = Lbl( text='People Tracker\n{0}'.format(self.date), size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.total_lbl = Lbl( text="{0}{1}".format(self.total_txt, self.total), size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.mask_lbl = Lbl( text="{0}{1}".format(self.mask_txt, self.tally_mask_amt), size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.no_mask_lbl = Lbl( text="{0}{1}".format(self.no_mask_txt, self.tally_no_mask_amt), size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.take_w_mask_lbl = Lbl( text="{0}{1}".format(self.take_w_mask_txt, self.tally_take_w_mask_amt), size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.take_wo_mask_lbl = Lbl( text="{0}{1}".format(self.take_wo_mask_txt, self.tally_take_wo_mask_amt), size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.tally_mask = Btn( text="Wearing Mask", size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.tally_no_mask = Btn( text="Refuse Mask", size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.tally_take_w_mask = Btn( text="No Mask, Take Mask", size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.tally_take_wo_mask = Btn( text="Has Mask, Take Mask", size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.export_info = Btn( text="Export JSON", size_hint=(self.x, self.y), pos_hint={ "center_x": 0.5, "center_y": 0.5 }, ) self.graph = Logic(self.analytics) # Append all widgets _box.add_widget(_title) _box.add_widget(_inside) _inside.add_widget(self.total_lbl) _inside.add_widget(self.mask_lbl) _inside.add_widget(self.no_mask_lbl) _inside.add_widget(self.take_w_mask_lbl) _inside.add_widget(self.take_wo_mask_lbl) _grid.add_widget(widget=_box) _grid.add_widget(widget=self.tally_mask) _grid.add_widget(widget=self.tally_no_mask) _grid.add_widget(widget=self.tally_take_w_mask) _grid.add_widget(widget=self.tally_take_wo_mask) _grid.add_widget(widget=self.export_info) _graph_box.add_widget(widget=self.graph) self.tabs.add_widget(widget=self.tabhdr) self.tabs.default_tab_content = _grid self.tabhdr.content = _graph_box self.add_functionality() return self.tabs def add_functionality(self): """ Bind events to the buttons. :return: """ self.tally_mask.bind(on_press=lambda x: self.tallier(0)) self.tally_no_mask.bind(on_press=lambda x: self.tallier(1)) self.tally_take_w_mask.bind(on_press=lambda x: self.tallier(2)) self.tally_take_wo_mask.bind(on_press=lambda x: self.tallier(3)) self.export_info.bind(on_press=lambda x: self.export_doc()) self.tabhdr.bind(on_press=lambda x: self.graph.update()) def tallier(self, _input=int()): """ Press buttons and get results. :param _input: Passed input. :return: """ _get_time = str(datetime.today().time()).split(".")[0] if _input == 0: self.tally_mask_amt += 1 self.analytics["Mask"][0] = self.tally_mask_amt self.analytics["Mask"][1].setdefault(self.tally_mask_amt, _get_time) self.mask_lbl.text = "{0}{1}".format(self.mask_txt, self.tally_mask_amt) if _input == 1: self.tally_no_mask_amt += 1 self.analytics["NoMask"][0] = self.tally_no_mask_amt self.analytics["NoMask"][1].setdefault(self.tally_no_mask_amt, _get_time) self.no_mask_lbl.text = "{0}{1}".format(self.no_mask_txt, self.tally_no_mask_amt) if _input == 2: self.tally_take_w_mask_amt += 1 self.analytics["TookMask"][0] = self.tally_take_w_mask_amt self.analytics["TookMask"][1].setdefault( self.tally_take_w_mask_amt, _get_time) self.take_w_mask_lbl.text = "{0}{1}".format( self.take_w_mask_txt, self.tally_take_w_mask_amt) if _input == 3: self.tally_take_wo_mask_amt += 1 self.analytics["WoMask"][0] = self.tally_take_wo_mask_amt self.analytics["WoMask"][1].setdefault(self.tally_take_wo_mask_amt, _get_time) self.take_wo_mask_lbl.text = "{0}{1}".format( self.take_wo_mask_txt, self.tally_take_wo_mask_amt) self.total += 1 self.analytics['Total'] = self.total self.total_lbl.text = "{0}{1}".format(self.total_txt, self.total) def export_doc(self): if DEBUG: print(self.analytics) with open("analytics_{0}.json".format(self.date).replace("/", "_"), "w") as f: json.dump(self.analytics, f)