def __init__(self, **kwargs): """Inits the board""" super(SoundBoard, self).__init__(**kwargs) slide = Slider(min=0.5, max=5, value=3, step=0.05, orientation='vertical', size_hint_y=15) slide.fbind('value', self.on_slider_val) self.label = Label(text=str(int(self.slider_val*60)) + ' bpm', size_hint_y=1) self.ids.slidesection.add_widget(self.label) self.ids.slidesection.add_widget(slide)
def build(self): # return Joystick() self.root = GridLayout(cols=4) self.root.padding = 50 # with self.canvas: # Rectangle(source='background.jpeg', pos=self.pos, size=self.size) slider = Slider(min=-1, max=1, value=-1, step=0.05, orientation='vertical') slider.fbind('value', self.on_slider_val) self.root.add_widget(slider) # logo = Image(source = 'qlogo.png') # self.root.add_widget(logo) connectbutton = Button(text='Connect') connectbutton.bind(on_press=self.connect_callback) self.root.add_widget(connectbutton) armbutton = Button(text='Arm') armbutton.bind(on_press=self.arm_callback) self.root.add_widget(armbutton) # takeoffbutton = Button(text='Arm and Take Off') # takeoffbutton.bind(on_press = self.arm_and_takeoff_callback) # self.root.add_widget(takeoffbutton) # landbutton = Button(text='Land') # landbutton.bind(on_press = self.land_callback) # self.root.add_widget(landbutton) killbutton = Button(text='Kill Motors') killbutton.bind(on_press=self.kill_motors) self.root.add_widget(killbutton) # self.root.add_widget(BoxLayout(orientation='horizontal')) throttle_joystick = Joystick() movement_joystick = Joystick() throttle_joystick.bind(pad=self.throttle_stabilize) # throttle_joystick.bind(pad=self.simple_update_throttle_stick) self.root.add_widget(throttle_joystick) self.label1 = Label() self.root.add_widget(self.label1) self.label2 = Label() self.root.add_widget(self.label2) # self.root.add_widget(BoxLayout(orientation='horizontal')) movement_joystick.bind(pad=self.move_stabilize) self.root.add_widget(movement_joystick)
class LumGrid(GridLayout): def __init__(self): GridLayout.__init__(self, cols=1, rows=2) self.brightLabel = Label(text="Luminosité") self.add_widget(self.brightLabel) self.brightSlider = Slider(min=0, max=100, value=50) self.brightSlider.fbind('value', self.change_brightness) self.add_widget(self.brightSlider) def change_brightness(self, instance, val): try: print("Changing brightness: ", int(val)) if(light != None): light.set_brightness(int(val)) if(light2 != None): light2.set_brightness(int(val)) toggleState.text = "Résultat: [color=00FF00]OK ![/color]" except: toggleState.text = 'Résultat: [color=ff0000]Echec ![/color]' pass
def build(self): #Définition de la zone de dessin self.dessin = dessin = ColorWidget() #Slider pour définir la taille du pinceau sld = Slider(min=5, max=50, value=15) sld.fbind('value', self.on_value) self.lbl = lbl = Label(text='size = {}'.format(sld.value)) #Définition de la zone de dessin, les fonctions update permettent d'adapter le coloriage # à la taille de la fenêtre dessin.bind(size=self._update_rect, pos=self._update_rect) with dessin.canvas.before: Color(1, 1, 1) self.fond = Rectangle(size=dessin.size, pos=dessin.pos) with dessin.canvas.after: self.rect = Image( source='link.png') # l'image doit être dans le dossier du main #Définition du panel panel = BoxLayout(orientation='vertical', size_hint=(None, 1)) palette = GridLayout(cols=2, size_hint_y=4) btn1 = Button(text='Clear') btn1.bind(on_release=partial(self.clear_canvas)) panel.add_widget(btn1) panel.add_widget(self.lbl) panel.add_widget(sld) #Splitter pour séparer le dessin du panel splitter = Splitter(sizable_from='right', size_hint=(None, 1)) splitter.strip_size = '5pt' splitter.add_widget(panel) splitter.min_size = panel.width splitter.max_size = panel.width #Pallette de couleur for choice in (('crtte', (0.96, 0.4, 0.1)), ('red', (0.85, 0, 0.08)), ('mron', (0.53, 0.26, 0.11)), ('pink', (1, 0.42, 0.62)), ('beige', (0.78, 0.67, 0.50)), ('FUSH', (0.86, 0, 0.45)), ('safra', (0.95, 0.84, 0.09)), ('violet', (0.475, 0.11, 0.97)), ('LIME', (0.62, 0.99, 0.22)), ('blue', (0.06, 0.20, 0.65)), ('green', (0, 0.8, 0.3)), ('blue', (0.15, 0.769, 0.93)), ('btll', (0.04, 0.42, 0.04)), ('GRS', (0.5, 0.5, 0.5)), ('blc', (1, 1, 1)), ('nr', (0, 0, 0))): button = Button( background_normal='', background_color=[choice[1][0], choice[1][1], choice[1][2], 1]) button.bind(on_release=partial(self.set_color, choice[1])) palette.add_widget(button) panel.add_widget(palette) root = BoxLayout(orientation='horizontal') root.add_widget(splitter) root.add_widget(self.dessin) return root
class AiResultScreen(GridLayout): def __init__(self, **kwargs): super(AiResultScreen, self).__init__(**kwargs) self.noOfWeights = 0 self.weightSimulate = 0 self.fileName = '' self.cols = 1 topLine = BoxLayout(orientation='horizontal', spacing=10) topLine.add_widget(Label(text='', size_hint=(0.05, 1))) topLine.add_widget(ImageButton(size_hint=(.1, 1))) topLine.add_widget( Label(text='RESULT SCREEN', size_hint=(.7, 1), font_size='30sp')) topLine.add_widget(Label(text='', size_hint=(0.15, 1))) self.add_widget(topLine) ################################## IMPORT BUTTON ################################################################################# mainGrid = GridLayout(cols=1, row_force_default=True, row_default_height=40) importLine = GridLayout(cols=3, rows=1, row_force_default=True, row_default_height=50) importBut = Button(text="Import population", size_hint_x=None, width=250, font_size='20sp') importBut.bind(on_press=self.importButton) importLine.add_widget(Label()) importLine.add_widget(importBut) importLine.add_widget(Label()) mainGrid.add_widget(importLine) mainGrid.add_widget(Label()) ################################## INFO LABELS ################################################################################# infoGrid = GridLayout(cols=2, rows=8, row_force_default=True, row_default_height=20) infoGrid.add_widget(Label(text='Date of training:', font_size='20sp')) self.dateLabel = Label(font_size='20sp') infoGrid.add_widget(self.dateLabel) infoGrid.add_widget(Label()) infoGrid.add_widget(Label()) snakeGrid2 = GridLayout(cols=3, row_force_default=True, row_default_height=30) snakeGrid2.add_widget(Label(size_hint_x=None, width=35)) snakeGrid2.add_widget(Label(text='Snakes in gen.:', font_size='20sp')) self.snakes1Label = Label(font_size='20sp') snakeGrid2.add_widget(self.snakes1Label) infoGrid.add_widget(snakeGrid2) snakeGrid = GridLayout(cols=3, row_force_default=True, row_default_height=30) snakeGrid.add_widget(Label(size_hint_x=None, width=15)) snakeGrid.add_widget(Label(text='Total snakes:', font_size='20sp')) self.allSnakesLabel = Label(font_size='20sp') snakeGrid.add_widget(self.allSnakesLabel) infoGrid.add_widget(snakeGrid) infoGrid.add_widget(Label()) infoGrid.add_widget(Label()) selGrid = GridLayout(cols=3, row_force_default=True, row_default_height=30) selGrid.add_widget(Label(size_hint_x=None, width=20)) selGrid.add_widget(Label(text='Select. rate:', font_size='20sp')) self.selectionLabel = Label(font_size='20sp') selGrid.add_widget(self.selectionLabel) infoGrid.add_widget(selGrid) mutGrid = GridLayout(cols=3, row_force_default=True, row_default_height=30) mutGrid.add_widget(Label(size_hint_x=None, width=15)) mutGrid.add_widget(Label(text='Mutation rate:', font_size='20sp')) self.mutationLabel = Label(font_size='20sp') mutGrid.add_widget(self.mutationLabel) infoGrid.add_widget(mutGrid) infoGrid.add_widget(Label()) infoGrid.add_widget(Label()) infoGrid.add_widget(Label()) infoGrid.add_widget(Label()) net1Grid = GridLayout(cols=3, row_force_default=True, row_default_height=25) net1Grid.add_widget(Label(size_hint_x=None, width=20)) net1Grid.add_widget( Label(text='Neurons in\n 1. layer:', font_size='20sp')) self.noNeuron1Label = Label(font_size='20sp') net1Grid.add_widget(self.noNeuron1Label) infoGrid.add_widget(net1Grid) net2Grid = GridLayout(cols=3, row_force_default=True, row_default_height=25) net2Grid.add_widget(Label(size_hint_x=None, width=15)) net2Grid.add_widget( Label(text='Neurons in\n 2. layer:', font_size='20sp')) self.noNeuron2Label = Label(font_size='20sp') net2Grid.add_widget(self.noNeuron2Label) infoGrid.add_widget(net2Grid) mainGrid.add_widget(infoGrid) self.add_widget(mainGrid) self.add_widget(Label()) self.add_widget(Label()) ################################## SLIDER ################################################################################# sliderLine = GridLayout(cols=1, rows=3, row_force_default=True, row_default_height=30) sliderLine.add_widget(Label(text="Generations", font_size='20sp')) self.slider = Slider(min=0, max=0, value=25, orientation='horizontal', size_hint=(0.8, 1)) self.slider.fbind('value', self.onChangeSliderValue) sliderUpLine = BoxLayout() sliderUpLine.add_widget( Label(text='0', size_hint=(0.1, 1), font_size='20sp')) sliderUpLine.add_widget(self.slider) self.noOfWeightsLabel = Label(text='0', size_hint=(0.1, 1), font_size='20sp') sliderUpLine.add_widget(self.noOfWeightsLabel) sliderLine.add_widget(sliderUpLine) self.actSliderValLabel = Label(text='0', font_size='20sp') sliderLine.add_widget(self.actSliderValLabel) self.add_widget(sliderLine) ################################## FIELD DIMENSIONS SPEED ################################################################################# dimLine = GridLayout(cols=3, rows=2, row_force_default=True, row_default_height=40, spacing=3) dimLine.add_widget( Label(text='Field dimensions', size_hint_x=None, width=200, font_size='20sp')) self.fieldSizeTI = TextInput(multiline=False, text=str(globalVars.fieldSize - 2), size_hint_x=None, width=50, font_size='20sp') dimLine.add_widget(self.fieldSizeTI) dimLine.add_widget( Label(text='cells', size_hint_x=None, width=70, font_size='20sp')) dimLine.add_widget( Label(text='Speed', size_hint_x=None, width=200, font_size='20sp')) self.snakeSpeedTI = TextInput(multiline=False, text=str(100), size_hint_x=None, width=50, font_size='20sp') dimLine.add_widget(self.snakeSpeedTI) dimLine.add_widget( Label(text='cell/s', size_hint_x=None, width=70, font_size='20sp')) self.add_widget(dimLine) ################################## SIMULATE SNAKE, SHOW GRAPHS ################################################################################# btnSimLine = GridLayout(cols=5, rows=1, row_force_default=True, row_default_height=50) simSnakeBut = Button(text="Simulate snake", size_hint_x=None, width=200, font_size='20sp') simSnakeBut.bind(on_press=self.simSnakeButton) btnSimLine.add_widget(Label()) btnSimLine.add_widget(simSnakeBut) btnSimLine.add_widget(Label()) graphBut = Button(text="Show graphs", size_hint_x=None, width=200, font_size='20sp') graphBut.bind(on_press=self.openGraphs) btnSimLine.add_widget(graphBut) btnSimLine.add_widget(Label()) self.add_widget(btnSimLine) def onChangeSliderValue(self, instance, val): self.actSliderValLabel.text = str(int(val)) self.weightSimulate = int(val) def simSnakeButton(self, instance): if self.fileName == '': self.popupShow() else: simS = threading.Thread(target=self.simSnakeThr) simS.start() def simSnakeThr(self): fieldSize = int(self.fieldSizeTI.text) snakeSpeed = float(self.snakeSpeedTI.text) dataIn = multiprocessing.JoinableQueue() results = multiprocessing.Queue() proces = SimulateProcess(dataIn, results) proces.start() dataIn.put( [fieldSize + 2, snakeSpeed, self.fileName, self.weightSimulate]) def importButton(self, instance): self.fileName = filedialog.askopenfilename( initialdir=globalVars.initialDir, title="Import population", filetypes=(("CSV", "*.csv"), ("All files", "*.*"))) globalVars.initialDir = os.path.split(self.fileName) if self.fileName: importThrHandle = threading.Thread(target=self.importThread, daemon=True) importThrHandle.start() def openGraphs(self, instance): if self.fileName == '': self.popupShow() else: openG = threading.Thread(target=self.openGraphsThr) openG.start() def openGraphsThr(self): dataIn = multiprocessing.JoinableQueue() results = multiprocessing.Queue() proces = GraphProcess(dataIn, results) proces.start() dataIn.put([self.fileName, 0]) def importThread(self): self.readStatCsv(self.fileName) self.updateInfo() def updateInfo(self): self.slider.max = self.noOfWeights self.noOfWeightsLabel.text = str(self.noOfWeights) def readStatCsv(self, fileName): with open(fileName) as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') lineCount = 0 self.noOfWeights = 0 fileDateTime = '' noOfSnakes = '' selectionRate = '' mutationRate = '' for row in csv_reader: if lineCount == 0: fileDateTime = row[1] elif lineCount == 1: noOfSnakes = row[1] elif lineCount == 2: selectionRate = row[1] elif lineCount == 3: mutationRate = row[1] elif lineCount == 4: noOfInputs = row[1] elif lineCount == 5: noOfNeuron1Layer = row[1] elif lineCount == 6: noOfNeuron2Layer = row[1] if row[0] == 'weights': self.noOfWeights += 1 lineCount += 1 self.noOfWeights -= 1 self.dateLabel.text = fileDateTime self.snakes1Label.text = noOfSnakes self.allSnakesLabel.text = str( int(noOfSnakes) * int(self.noOfWeights)) self.selectionLabel.text = selectionRate self.mutationLabel.text = mutationRate self.noNeuron1Label.text = noOfNeuron1Layer self.noNeuron2Label.text = noOfNeuron2Layer def popupShow(self): layout = GridLayout(cols=1, padding=10) popupLabel1 = Label(text="NO file selected", font_size='20sp') popupLabel2 = Label(text="IMPORT file with population of snakes", font_size='20sp') layout.add_widget(popupLabel1) layout.add_widget(popupLabel2) popup = Popup(title='INFO', content=layout, size_hint=(None, None), size=(400, 200)) popup.open()
class gui(GridLayout): initial_accuracy = StringProperty('Starting Accuracy: 50.0000') initial_loss = StringProperty('Starting Loss: 5.0000') initial_samples = StringProperty('Number of Samples: 5') def __init__(self, **kwargs): super(gui, self).__init__(**kwargs) #Window Setup self.cols = 2 Config.set('graphics', 'resizable', False) Window.size = (670, 240) #Starting Accuracy Slider self.starting_accuracy = Slider(min=0, max=100, value=50, step=0.0001, size_hint_x=1, size_hint_y=None, height=30) self.starting_accuracy.fbind('value', self.on_acc_val) self.acc_label = Label(text=str(self.initial_accuracy), size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.acc_label) self.add_widget(self.starting_accuracy) #Starting Loss Slider self.starting_loss = Slider(min=1, max=10, value=5, step=0.0001, size_hint_x=1, size_hint_y=None, height=30) self.starting_loss.fbind('value', self.on_loss_val) self.loss_label = Label(text=str(self.initial_loss), size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.loss_label) self.add_widget(self.starting_loss) #Number of Samples Slider self.samples = Slider(min=3, max=10, value=5, step=1, size_hint_x=1, size_hint_y=None, height=30) self.samples.fbind('value', self.on_sample) self.sample_label = Label(text=str(self.initial_samples), size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.sample_label) self.add_widget(self.samples) #Average Training Time Text Input self.avg_train_time_label = Label( text='Average Training Time per Sample (In Seconds):', size_hint_x=1, size_hint_y=None, height=30) self.avg_train_time = TextInput(multiline=False, input_filter='float', hint_text='Default: 1', size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.avg_train_time_label) self.add_widget(self.avg_train_time) #Training Time Variance Dropdown Menu self.spinner = Spinner(text='Low', values=('High', 'Medium', 'Low'), sync_height=True, size_hint_x=1, size_hint_y=None, height=30) self.variance_label = Label(text='Training Time Variance:', size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.variance_label) self.add_widget(self.spinner) #Learning Speed Dropdown Menu self.spinner2 = Spinner(text='Low', values=('High', 'Medium', 'Low'), sync_height=True, size_hint_x=1, size_hint_y=None, height=30) self.speed_label = Label(text='Learning Speed:', size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.speed_label) self.add_widget(self.spinner2) #Number of Epochs Text Input self.epochs_label = Label(text='Number of Epochs:', size_hint_x=1, size_hint_y=None, height=30) self.epochs = TextInput(multiline=False, input_filter='int', hint_text='Default: 10', size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.epochs_label) self.add_widget(self.epochs) #Go! inputs = [self.starting_accuracy] self.go = Button(text='Go!', on_press=self.begin_simulation, size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.go) #Stop! self.stop = Button(text='Stop!', on_press=self.end_simulation, size_hint_x=1, size_hint_y=None, height=30) self.add_widget(self.stop) def on_acc_val(self, instance, val): self.acc_label.text = 'Starting Accuracy: ' + str('%.4f' % (val)) def on_loss_val(self, instance, val): self.loss_label.text = 'Starting Loss: ' + str('%.4f' % (val)) def on_sample(self, instance, val): self.sample_label.text = 'Number of Samples: ' + str(val) def begin_simulation(self, btn): if self.avg_train_time.text == '': train_time = '1' else: train_time = self.avg_train_time.text if self.epochs.text == '': num_epochs = '10' else: num_epochs = self.epochs.text lst = [ self.starting_accuracy.value, self.starting_loss.value, self.samples.value, train_time, self.spinner.text, num_epochs, self.spinner2.text ] #Initialize Settings cwd = os.getcwd() with open(cwd + '/SETTINGS.txt', 'w') as outfile: outfile.write('STARTING ACCURACY: ' + str(lst[0]) + '\n') outfile.write('STARTING LOSS: ' + str(lst[1]) + '\n') outfile.write('NUM SAMPLES: ' + str(lst[2]) + '\n') outfile.write('AVG TRAIN TIME: ' + str(lst[3]) + '\n') outfile.write('TRAIN VARIANCE: ' + str(lst[4]) + '\n') outfile.write('NUM EPOCHS: ' + str(lst[5]) + '\n') outfile.write('LEARN SPEED: ' + str(lst[6]) + '\n') if platform.system() == 'Linux': subprocess.call( ['gnome-terminal', '-x', 'python3', 'totally_legit_model.py']) elif platform.system() == 'Darwin': appscript.app('Terminal').do_script('python3 ' + cwd + '/totally_legit_model.py') def end_simulation(self, btn): subprocess.call(['pkill', '-9', '-f', 'totally_legit_model.py'])
class Container(BoxLayout): slider_val = NumericProperty(0) def __init__(self, *args, **kwargs): super(Container, self).__init__(*args, **kwargs) self.orientation = 'vertical' self.speakers = [] self.pulse = pulsectl.Pulse() sinks = self.pulse.sink_list() for s in sinks: if s.name != 'combined': self.speakers.append(s) self.sink = sinks[0] self.speakers_order = [(0, 0), (0, 1), (1, 0), (1, 1)] self.slide = Slider(min=-1, max=1, value=0) self.slide.fbind('value', self.on_slider_val) but_reset = Button(text='RESET_BAL') but_reset.bind(on_press=self.slide_to_z) self.label = Label(text=str(self.slider_val)) self.speaker_inf = Label() self.update_speak_info() self.add_widget(self.slide) self.add_widget(self.label) self.add_widget(self.speaker_inf) self.add_widget(but_reset) def on_slider_val(self, instance, val): self.label.text = str(val) vol = self.sink.volume.values l, r = vol m = (l + r) / 2 l = m - val * m r = m + val * m vol = PulseVolumeInfo([l, r]) print(vol) try: self.pulse.volume_set(self.sink, vol) except: print("lol volume change error") self.update_speak_info() def slide_to_z(self, instance): self.slide.value = 0 self.update_speak_info() def update_speak_info(self): speak_vol = "" for t in self.speakers_order: s, c = t speak_vol += (str(self.speakers[s].index) + " " + str(self.speakers[s].volume.values[c]) + "\n") self.speaker_inf.text = speak_vol
class RGBGrid(GridLayout): def __init__(self): GridLayout.__init__(self, cols=1, rows=6) if(vars.red == None): vars.red = 255 if(vars.green == None): vars.green = 255 if(vars.blue == None): vars.blue = 255 self.redSlider = Slider(min=0, max=255, value=vars.red) self.redSlider.fbind('value', self.change_red) self.greenSlider = Slider(min=0, max=255, value=vars.green) self.greenSlider.fbind('value', self.change_green) self.blueSlider = Slider(min=0, max=255, value=vars.blue) self.blueSlider.fbind('value', self.change_blue) self.redText = Label(text="Rouge", markup = True) self.add_widget(self.redText) self.add_widget(self.redSlider) self.greenText = Label(text="Vert", markup = True) self.add_widget(self.greenText) self.add_widget(self.greenSlider) self.blueText = Label(text="Bleu", markup = True) self.add_widget(self.blueText) self.add_widget(self.blueSlider) def change_blue(self, instance, val): try: vars.blue = val if(light != None): light.set_rgb(int(vars.red), int(vars.green), int(vars.blue)) if(light2 != None): light2.set_rgb(int(vars.red), int(vars.green), int(vars.blue)) toggleState.text = "Résultat: [color=00FF00]OK ![/color]" print(vars.red, vars.green, vars.blue) except: toggleState.text = 'Résultat: [color=ff0000]Echec ![/color]' pass def change_green(self, instance, val): try: vars.green = val if(light != None): light.set_rgb(int(vars.red), int(vars.green), int(vars.blue)) if(light2 != None): light2.set_rgb(int(vars.red), int(vars.green), int(vars.blue)) toggleState.text = "Résultat: [color=00FF00]OK ![/color]" print(vars.red, vars.green, vars.blue) except: toggleState.text = 'Résultat: [color=ff0000]Echec ![/color]' pass def change_red(self, instance, val): try: vars.red = val if(light != None): light.set_rgb(int(vars.red), int(vars.green), int(vars.blue)) if(light2 != None): light2.set_rgb(int(vars.red), int(vars.green), int(vars.blue)) toggleState.text = "Résultat: [color=00FF00]OK ![/color]" print(vars.red, vars.green, vars.blue) except: toggleState.text = 'Résultat: [color=ff0000]Echec ![/color]' pass
def __init__(self, *args, **kwargs): super(Container, self).__init__(*args, **kwargs) self.orientation = 'vertical' # Get the initial status for our lights and use it to set right values for our GUI components tvstandLight = Light('1') kitchenLight = Light('2') officeLight = Light('3') label1 = Label(text="Tv-taso") sw1 = Switch(id='1', active=tvstandLight.state['on'] or False) slide1 = Slider(id='1', min=1, step=1, max=254, value=tvstandLight.state['bri'] or 50) btn1 = Button(id='1', text="Select Color", background_color=self.convert_xy_to_rgb( tvstandLight.state['xy'])) label2 = Label(text="Keittiö") sw2 = Switch(id='2', active=kitchenLight.state['on'] or False) slide2 = Slider(id='2', min=1, step=1, max=254, value=kitchenLight.state['bri'] or 50) btn2 = Button(id='2', text="Select Color", background_color=self.convert_xy_to_rgb( kitchenLight.state['xy'])) label3 = Label(text="Työpöytä") sw3 = Switch(id='3', active=officeLight.state['on'] or False) slide3 = Slider(id='3', step=1, min=1, max=254, value=officeLight.state['bri'] or 50) btn3 = Button(id='3', text="Select Color", background_color=self.convert_xy_to_rgb( officeLight.state['xy'])) # Bind actions for our buttons and sliders sw1.bind(active=self.toggle_light) sw2.bind(active=self.toggle_light) sw3.bind(active=self.toggle_light) slide1.fbind('value', self.select_brightness) slide2.fbind('value', self.select_brightness) slide3.fbind('value', self.select_brightness) btn1.bind(on_release=self.select_color) btn2.bind(on_release=self.select_color) btn3.bind(on_release=self.select_color) # Render stuff self.add_widget(label1) self.add_widget(sw1) self.add_widget(slide1) self.add_widget(btn1) self.add_widget(label2) self.add_widget(sw2) self.add_widget(slide2) self.add_widget(btn2) self.add_widget(label3) self.add_widget(sw3) self.add_widget(slide3) self.add_widget(btn3)
class MenuScreen(Screen): Window.size = (500, 600) def __init__(self, **kwargs): super(Screen, self).__init__(**kwargs) self.tagbtn() tagName = ObjectProperty(None) startTime = ObjectProperty(None) endTime = ObjectProperty(None) lateValue = ObjectProperty(None) animationStatus = ObjectProperty(None) def tagbtn(self): self.add_widget(GridLayout()) self.cols = 2 self.tagLabel = Label(text="Tag Name ", pos_hint={ "center_x": .5, "center_y": -.1 }, font_name="Roboto-Bold.ttf", font_size="40") self.add_widget(self.tagLabel) self.tagNme = TextInput(multiline=False, size_hint=(.5, .1), pos_hint={ "center_x": .5, "center_y": -.2 }, text='') self.add_widget(self.tagNme) self.tostartbtn = Button(text="Next", size_hint=(.5, .1), pos_hint={ "center_x": .5, "center_y": -.3 }) self.tostartbtn.bind(on_press=self.startBtn) self.add_widget(self.tostartbtn) self.locator = Image(source="locator.png", pos_hint={ "center_x": .5, "center_y": -.4 }) self.add_widget(self.locator) self.tagLabel.opacity = 0 self.tagNme.opacity = 0 self.tostartbtn.opacity = 0 self.locator.opacity = 0 anim = Animation(opacity=1, duration=1) anim2 = Animation(pos_hint={"center_y": .7}, duration=.5) anim3 = Animation(pos_hint={"center_y": .6}, duration=.5) anim4 = Animation(pos_hint={"center_y": .47}, duration=.5) anim5 = Animation(pos_hint={"center_y": .25}, duration=.5) anim.start(self.tagLabel) anim.start(self.tagNme) anim.start(self.tostartbtn) anim.start(self.locator) anim2.start(self.tagLabel) anim3.start(self.tagNme) anim4.start(self.tostartbtn) anim5.start(self.locator) def startBtn(self, instance): self.tagName = self.tagNme.text print(self.tagName) anim = Animation(pos_hint={"center_x": -1}, duration=.5) anim.start(self.tagLabel) anim.start(self.tagNme) anim.start(self.tostartbtn) anim.start(self.locator) anim2 = Animation(pos_hint={"center_x": .5}, duration=.5) self.startLabel = Label(text="Start Time ", pos_hint={ "center_x": 1.5, "center_y": .7 }, font_name="Roboto-Bold.ttf", font_size="40") self.add_widget(self.startLabel) self.strtTime = TextInput(multiline=False, size_hint=(.5, .1), pos_hint={ "center_x": 1.5, "center_y": .6 }, text='') self.add_widget(self.strtTime) self.toendbtn = Button(text="Next", size_hint=(.5, .1), pos_hint={ "center_x": 1.5, "center_y": .47 }) self.toendbtn.bind(on_press=self.endBtn) self.add_widget(self.toendbtn) self.startclock = Image(source="clockstart.png", pos_hint={ "center_x": 1.5, "center_y": .25 }) self.add_widget(self.startclock) anim2.start(self.startLabel) anim2.start(self.strtTime) anim2.start(self.toendbtn) anim2.start(self.startclock) def endBtn(self, instance): self.startTime = self.strtTime.text print(self.startTime) anim = Animation(pos_hint={"center_x": -1}, duration=.5) anim.start(self.startLabel) anim.start(self.strtTime) anim.start(self.toendbtn) anim.start(self.locator) anim2 = Animation(pos_hint={"center_x": .5}, duration=.5) self.endLabel = Label(text="End Time ", pos_hint={ "center_x": 1.5, "center_y": .7 }, font_name="Roboto-Bold.ttf", font_size="40") self.add_widget(self.endLabel) self.eTime = TextInput(multiline=False, size_hint=(.5, .1), pos_hint={ "center_x": 1.5, "center_y": .6 }, text='') self.add_widget(self.eTime) self.tolatebtn = Button(text="Next", size_hint=(.5, .1), pos_hint={ "center_x": 1.5, "center_y": .47 }) self.tolatebtn.bind(on_press=self.lteBtn) self.add_widget(self.tolatebtn) # self.locator = Image(source="locator.png", pos_hint={"center_x": .5, "center_y": .3}) # self.add_widget(self.locator) anim2.start(self.endLabel) anim2.start(self.eTime) anim2.start(self.tolatebtn) def lteBtn(self, instance): self.endTime = self.eTime.text print(self.endTime) anim3 = Animation(pos_hint={"center_y": -.4}, duration=.5) anim = Animation(pos_hint={"center_x": -1}, duration=.5) anim.start(self.endLabel) anim.start(self.eTime) anim.start(self.tolatebtn) anim.start(self.locator) anim3.start(self.startclock) anim2 = Animation(pos_hint={"center_x": .5}, duration=.5) self.lateLabel = Label(text="late Time ", pos_hint={ "center_x": 1.5, "center_y": .7 }, font_name="Roboto-Bold.ttf", font_size="40") self.add_widget(self.lateLabel) self.latetimeL = Label(text="0h ", pos_hint={ "center_x": 1.5, "center_y": .55 }, font_name="Roboto-Bold.ttf", font_size="75") self.add_widget(self.latetimeL) self.lateTime = Slider(multiline=False, size_hint=(.5, .1), pos_hint={ "center_x": 1.5, "center_y": .47 }, min=0, max=24, value=0, cursor_image="cursoredit.png") self.lateTime.fbind('value', self.on_slider_val) self.add_widget(self.lateTime) self.endbtn = Button(text="Next", size_hint=(.5, .1), pos_hint={ "center_x": 1.5, "center_y": .3 }) self.endbtn.bind(on_press=self.changer) self.add_widget(self.endbtn) # self.locator = Image(source="locator.png", pos_hint={"center_x": .5, "center_y": .3}) # self.add_widget(self.locator) anim2.start(self.lateLabel) anim2.start(self.latetimeL) anim2.start(self.lateTime) anim2.start(self.endbtn) #anim.start(self.locator) #*****Change late time value based on slider movement***** def on_slider_val(self, instance, val): if val > 10: self.latetimeL.text = str(val)[:2] + "h" self.lateValue = str(val)[:2] else: self.latetimeL.text = str(val)[:1] + "h" self.lateValue = str(val)[:1] def changer(self, *args): self.btn() self.manager.current = 'results' def start(self): self.tagbtn() def btn(self): print(self.tagName, self.startTime, self.endTime) self.manager.get_screen('results').build()