def builder(self, *args): # Menu Layout and Buttons buttons_grid = GridLayout(cols=1, size_hint=[0.3, 0.1], pos_hint={"center_x": 0.5, "center_y": 0.5}) button_1 = Menu_Button(text="Bluetooth", screenmanager=self.manager, screen="bluetooth") buttons_grid.add_widget(button_1) button_2 = Menu_Button(text="Exit") buttons_grid.add_widget(button_2) button_2.bind(on_press=self.exitApp) self.add_widget(buttons_grid)
def builder(self, *args): # Menu Layout and Buttons buttons_grid = GridLayout(cols=1, size_hint=[0.3, 0.1], pos_hint={'center_x': .5, 'center_y': .5}) button_1 = Menu_Button(text='Bluetooth', screenmanager=self.manager, screen='bluetooth') buttons_grid.add_widget(button_1) button_2 = Menu_Button(text='Exit') buttons_grid.add_widget(button_2) button_2.bind(on_press=self.exitApp) self.add_widget(buttons_grid)
class Bluetooth_Screen(Screen): def __init__(self, color=(0, 0, 0), **kwargs): super(Bluetooth_Screen, self).__init__(**kwargs) with self.canvas.before: Color(color[0] / 256., color[1] / 256., color[2] / 256.) self.rect = Rectangle(size=self.size) self.name_dict = {} args_converter = lambda row_index, data_item: {'text': data_item.name, 'mac_addr': data_item.mac_addr, 'size_hint_y': None, 'height': 25} self.adapter = ListAdapter(data=[], args_converter=args_converter, cls=CustomListItemButton, selection_mode='single') self.adapter.bind(on_selection_change=self.item_selected) self.discovered_list = ListView(size_hint=(.5, .5), adapter=self.adapter) self.add_widget(self.discovered_list) self.info_label = Label(size_hint=(.5, None), height=30) self.add_widget(self.info_label) self.connect_button = Button(text='Connect', disabled=True, size_hint=(None, None), width=100, height=30, pos_hint={'center_x': .5, 'y': 0}) self.connect_button.bind(on_press=self.connect) self.add_widget(self.connect_button) self.send_text = TextInput(text='Insert text to send', size_hint=(None, None), size=(200, 30), pos_hint={'center_x': .5}, multiline=False, disabled= True) self.send_text.bind(on_text_validate=self.send) self.add_widget(self.send_text) self.bind(size=self.update) def update(self, *args): self.rect.size = self.size self.discovered_list.pos_hint = {'center_x': .5, 'center_y': .5} self.info_label.pos_hint = {'center_y': .8, 'center_x': .5} self.send_text.y = self.y + 30 def builder(self): self.add_widget(Menu_Button(size_hint=[.1, .1], text='Go Back', screenmanager=self.manager, screen='menu')) self.discover_button = Menu_Button(size_hint=[.1, .1], pos_hint={'right': 1}, text='Discover') self.add_widget(self.discover_button) self.discover_button.bind(on_press=self.start_discover) def start_discover(self, *args): Clock.schedule_interval(self.discover, .5) def discover(self, *args): if not self.discover_button.disabled: self.discover_button.disabled = True self.info_label.text = "Discovering devices..." discover_thread = Thread(target=bluet.discover_thread, args=(queue,)) discover_thread.start() items = [] if not queue.empty(): discovered = queue.get() for x in discovered: items.append(DataItem(x, discovered[x])) self.adapter.data = items self.discover_button.disabled = False self.info_label.text = "Select device" Clock.unschedule(self.discover) def item_selected(self, *args): try: self.selected_item = args[0].selection[0] text = 'Device selected MAC: ' + self.selected_item.mac_addr self.info_label.text = text self.connect_button.disabled = False except: self.info_label.text = "No device selected" self.connect_button.disabled = True def connect(self, *args): self.bt_socket = bluet.connect(self.selected_item.mac_addr, 1) self.send_text.disabled = False self.info_label.text = 'Connected' def send(self, *args): self.bt_socket.send(self.send_text.text + '\n')
class Bluetooth_Screen(Screen): def __init__(self, color=(0, 0, 0), **kwargs): super(Bluetooth_Screen, self).__init__(**kwargs) with self.canvas.before: Color(color[0] / 256., color[1] / 256., color[2] / 256.) self.rect = Rectangle(size=self.size) self.name_dict = {} args_converter = lambda row_index, data_item: { 'text': data_item.name, 'mac_addr': data_item.mac_addr, 'size_hint_y': None, 'height': 25 } self.adapter = ListAdapter(data=[], args_converter=args_converter, cls=CustomListItemButton, selection_mode='single') self.adapter.bind(on_selection_change=self.item_selected) self.discovered_list = ListView(size_hint=(.5, .5), adapter=self.adapter) self.add_widget(self.discovered_list) self.info_label = Label(size_hint=(.5, None), height=30) self.add_widget(self.info_label) self.connect_button = Button(text='Connect', disabled=True, size_hint=(None, None), width=100, height=30, pos_hint={ 'center_x': .5, 'y': 0 }) self.connect_button.bind(on_press=self.connect) self.add_widget(self.connect_button) self.send_text = TextInput(text='Insert text to send', size_hint=(None, None), size=(200, 30), pos_hint={'center_x': .5}, multiline=False, disabled=True) self.send_text.bind(on_text_validate=self.send) self.add_widget(self.send_text) self.bind(size=self.update) def update(self, *args): self.rect.size = self.size self.discovered_list.pos_hint = {'center_x': .5, 'center_y': .5} self.info_label.pos_hint = {'center_y': .8, 'center_x': .5} self.send_text.y = self.y + 30 def builder(self): self.add_widget( Menu_Button(size_hint=[.1, .1], text='Go Back', screenmanager=self.manager, screen='menu')) self.discover_button = Menu_Button(size_hint=[.1, .1], pos_hint={'right': 1}, text='Discover') self.add_widget(self.discover_button) self.discover_button.bind(on_press=self.start_discover) def start_discover(self, *args): Clock.schedule_interval(self.discover, .5) def discover(self, *args): if not self.discover_button.disabled: self.discover_button.disabled = True self.info_label.text = "Discovering devices..." discover_thread = Thread(target=bluet.discover_thread, args=(queue, )) discover_thread.start() items = [] if not queue.empty(): discovered = queue.get() for x in discovered: items.append(DataItem(x, discovered[x])) self.adapter.data = items self.discover_button.disabled = False self.info_label.text = "Select device" Clock.unschedule(self.discover) def item_selected(self, *args): try: self.selected_item = args[0].selection[0] text = 'Device selected MAC: ' + self.selected_item.mac_addr self.info_label.text = text self.connect_button.disabled = False except: self.info_label.text = "No device selected" self.connect_button.disabled = True def connect(self, *args): self.bt_socket = bluet.connect(self.selected_item.mac_addr, 1) self.send_text.disabled = False self.info_label.text = 'Connected' def send(self, *args): self.bt_socket.send(self.send_text.text + '\n')