Skip to content

Instantly share code, notes, and snippets.

@franklintimoteo
Created May 4, 2018 15:13
Show Gist options
  • Save franklintimoteo/698927523f7315ada287d00c40729ab6 to your computer and use it in GitHub Desktop.
Save franklintimoteo/698927523f7315ada287d00c40729ab6 to your computer and use it in GitHub Desktop.
Using staticmethod
from asciimatics.screen import Screen
from asciimatics.scene import Scene
from asciimatics.widgets import Layout, Frame, Button, Text
class TestView(Frame):
def __init__(self, screen):
super().__init__(screen,
screen.height * 2 // 3,
screen.width * 2 // 3,
reduce_cpu=True,
)
self._create_layouts()
def _create_layouts(self):
top_layout = Layout([5, 1, 1])
self.add_layout(top_layout)
top_layout.add_widget(Text(label="Filter"))
self.text_count = Text(label="Count",
validator=self._is_digit) # validador should to call function with func(new_char)
top_layout.add_widget(self.text_count, 1)
top_layout.add_widget(Button("Back", lambda x: x), 2)
self.fix()
@staticmethod
def _is_digit(self, new_char):
# valid new char
# and insert with self.
if new_char.isdigit():
self.text_count.value = new_char
return True
def main(screen):
scenes = [
Scene([TestView(screen)], name="test"),
]
screen.play(scenes)
if __name__ == "__main__":
Screen.wrapper(main)
"""
(venv) franklin@slhost:~/PycharmProjects/viewerpackages$ python _main.py
Traceback (most recent call last):
File "_main.py", line 46, in <module>
Screen.wrapper(main)
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/screen.py", line 1169, in wrapper
func(screen)
File "_main.py", line 42, in main
screen.play(scenes)
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/screen.py", line 1343, in play
scenes, unhandled_input=unhandled_input, start_scene=start_scene)
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/screen.py", line 1406, in set_scenes
old_scene=start_scene, screen=self)
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/scene.py", line 44, in reset
effect.reset()
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/widgets.py", line 552, in reset
self.data = deepcopy(self._initial_data)
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/widgets.py", line 475, in data
layout.update_widgets()
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/widgets.py", line 1162, in update_widgets
widget.value = widget.value
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/widgets.py", line 1680, in value
self._set_and_check_value(new_value, reset=True)
File "/home/franklin/PycharmProjects/viewerpackages/venv/lib64/python3.6/site-packages/asciimatics/widgets.py", line 1692, in _set_and_check_value
self._is_valid = self._validator(self._value)
TypeError: _is_digit() missing 1 required positional argument: 'new_char'
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment