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
|
from asciimatics.widgets import Frame, ListBox, Layout, Divider, Text, Button
from asciimatics.widgets import TextBox, Widget
class DemoFrame(Frame):
def __init__(self, screen):
super(DemoFrame, self).__init__(screen,
screen.height * 2 // 3,
screen.width * 2 // 3,
hover_focus=True,
title="Contact Details",
reduce_cpu=True)
# Create layout
layout = Layout([100], fill_frame=True)
self.add_layout(layout)
# Add widgets
layout.add_widget(Text("Name:", "name"))
layout.add_widget(Text("Email:", "email"))
layout.add_widget(TextBox(3, "Address:", "address", as_string=True))
layout.add_widget(Divider())
layout2 = Layout([1, 1, 1, 1])
self.add_layout(layout2)
layout2.add_widget(Button("OK", self._ok), 0)
layout2.add_widget(Button("Cancel", self._cancel), 3)
self.fix()
def _ok(self):
# Handle OK button
self._scene.add_effect(PopUpDialog(self._screen, "Saved!", ["OK"]))
def _cancel(self):
raise StopApplication("User pressed quit")
def interactive_demo(screen):
screen.play([Scene([DemoFrame(screen)], -1)], stop_on_resize=True)
|