Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
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()
Exemple #6
0
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'])
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
    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)
Exemple #10
0
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()