python
from asciimatics.screen import Screen
from asciimatics.widgets import Frame, ListBox, Layout, Divider, Text, \
Button, TextBox, Widget
from asciimatics.exceptions import NextScene
class MainMenu(Frame):
def __init__(self, screen):
super(MainMenu, self).__init__(screen,
int(screen.height * 2 // 3),
int(screen.width * 2 // 3),
on_load=self._reload_screen)
layout = Layout([100], fill_frame=True)
self.add_layout(layout)
layout.add_widget(TextBox(5,
label="Text:",
name="text",
on_change=self._on_change))
layout.add_widget(Button("Ok", self._ok))
layout.add_widget(Button("Cancel", self._cancel))
self.fix()
def _ok(self):
raise NextScene("Main")
def _cancel(self):
raise NextScene("Main")
def _reload_screen(self, _):
self._screen.play([["Preparing..."]], stop_on_resize=True)
def _on_change(self):
self.palette["borders"] = (Widget.RED if self.data["text"] == "" else Widget.WHITE)
self._update_widgets()
class Game:
def __init__(self):
self.screen = Screen.open()
def run(self):
scenes = [
Scene([MainMenu(screen)],
-1,
name="Main"),
]
screen.set_scenes(scenes)
screen.start()
if __name__ == "__main__":
game = Game()
game.run()