forked from dps/piui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpiui_demo.py
111 lines (90 loc) · 4.15 KB
/
piui_demo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import functools
import os
import random
import time
from piui import PiUi
current_dir = os.path.dirname(os.path.abspath(__file__))
class DemoPiUi(object):
def __init__(self):
self.title = None
self.txt = None
self.img = None
self.ui = PiUi(img_dir=os.path.join(current_dir, 'imgs'))
self.src = "sunset.png"
def page_static(self):
self.page = self.ui.new_ui_page(title="Static Content", prev_text="Back",
onprevclick=self.main_menu)
self.page.add_textbox("Add a mobile UI to your Raspberry Pi project", "h1")
self.page.add_element("hr")
self.page.add_textbox("You can use any static HTML element " +
"in your UI and <b>regular</b> <i>HTML</i> <u>formatting</u>.", "p")
self.page.add_element("hr")
self.page.add_textbox("Your python code can update page contents at any time.", "p")
update = self.page.add_textbox("Like this...", "h2")
time.sleep(2)
for a in range(1, 5):
update.set_text(str(a))
time.sleep(1)
def page_buttons(self):
self.page = self.ui.new_ui_page(title="Buttons", prev_text="Back", onprevclick=self.main_menu)
self.title = self.page.add_textbox("Buttons!", "h1")
plus = self.page.add_button("Up Button ↑", self.onupclick)
minus = self.page.add_button("Down Button ↓", self.ondownclick)
def page_input(self):
self.page = self.ui.new_ui_page(title="Input", prev_text="Back", onprevclick=self.main_menu)
self.title = self.page.add_textbox("Input", "h1")
self.txt = self.page.add_input("text", "Name")
button = self.page.add_button("Say Hello", self.onhelloclick)
def page_images(self):
self.page = self.ui.new_ui_page(title="Images", prev_text="Back", onprevclick=self.main_menu)
self.img = self.page.add_image("sunset.png")
self.page.add_element('br')
button = self.page.add_button("Change The Picture", self.onpicclick)
def page_toggles(self):
self.page = self.ui.new_ui_page(title="Toggles", prev_text="Back", onprevclick=self.main_menu)
self.list = self.page.add_list()
self.list.add_item("Lights", chevron=False, toggle=True, ontoggle=functools.partial(self.ontoggle, "lights"))
self.list.add_item("TV", chevron=False, toggle=True, ontoggle=functools.partial(self.ontoggle, "tv"))
self.list.add_item("Microwave", chevron=False, toggle=True, ontoggle=functools.partial(self.ontoggle, "microwave"))
self.page.add_element("hr")
self.title = self.page.add_textbox("Home Appliance Control", "h1")
def page_console(self):
con = self.ui.console(title="Console", prev_text="Back", onprevclick=self.main_menu)
con.print_line("Hello Console!")
def main_menu(self):
self.page = self.ui.new_ui_page(title="PiUi")
self.list = self.page.add_list()
self.list.add_item("Static Content", chevron=True, onclick=self.page_static)
self.list.add_item("Buttons", chevron=True, onclick=self.page_buttons)
self.list.add_item("Input", chevron=True, onclick=self.page_input)
self.list.add_item("Images", chevron=True, onclick=self.page_images)
self.list.add_item("Toggles", chevron=True, onclick=self.page_toggles)
self.list.add_item("Console!", chevron=True, onclick=self.page_console)
self.ui.done()
def main(self):
self.main_menu()
self.ui.done()
def onupclick(self):
self.title.set_text("Up ")
print "Up"
def ondownclick(self):
self.title.set_text("Down")
print "Down"
def onhelloclick(self):
print "onstartclick"
self.title.set_text("Hello " + self.txt.get_text())
print "Start"
def onpicclick(self):
if self.src == "sunset.png":
self.img.set_src("sunset2.png")
self.src = "sunset2.png"
else:
self.img.set_src("sunset.png")
self.src = "sunset.png"
def ontoggle(self, what, value):
self.title.set_text("Toggled " + what + " " + str(value))
def main():
piui = DemoPiUi()
piui.main()
if __name__ == '__main__':
main()