You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tinge/main.py

66 lines
1.8 KiB

from logging import disable
import kivy
kivy.require('2.2.1')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button, ColorProperty
from kivy.uix.label import Label
from kivy.uix.screenmanager import Screen, ScreenManager
from src.tinge import HueBridge, Tinge
class HueApp(App):
def build(self):
self.tinge = Tinge()
sm = ScreenManager()
sm.add_widget(BridgeScreen(self.tinge))
return sm
class BridgeScreen(Screen):
bridges = []
layout = BoxLayout()
def __init__(self, tinge, **kwargs):
super(BridgeScreen, self).__init__(**kwargs)
self.tinge = tinge
for bridge_button in self.set_bridge_buttons():
self.layout.add_widget(bridge_button)
def press_button(self, bridge, button):
print(bridge.get_ipaddress())
def manually_add(self, button):
bridges = self.tinge.discover_new_bridges()
if bridges:
for bridge in bridges:
if not bridge in self.tinge.get_bridges():
self.tinge.append_bridge(bridge)
def set_bridge_buttons(self):
buttons = []
bridges = self.tinge.get_bridges()
for bridge in bridges:
bridge_button = Button(
text=str(bridge.get_ipaddress()),
size_hint=(1, 0.1),
on_press=lambda button: self.press_button(bridge, button))
buttons.append(bridge_button)
bridge_button = Button(
text='Discover Bridges',
size_hint=(1, 0.1),
on_press=lambda button: self.manually_add(button))
buttons.append(bridge_button)
sizer = Label(disabled = True)
buttons.append(sizer)
return buttons
if __name__ == '__main__':
HueApp().run()