python
pip install urwid
python
import urwid
class MyCustomWidget(urwid.WidgetWrap):
def __init__(self, text):
self.text = text
widget = urwid.Text(self.text)
widget = urwid.AttrMap(widget, 'widget_text')
super().__init__(widget)
def selectable(self):
return True
def keypress(self, size, key):
if key == 'enter':
self.text = "Enter key pressed"
self._invalidate()
return key
python
import urwid
class CustomTextBox(urwid.WidgetWrap):
def __init__(self, label, default_value):
self.label_text = urwid.Text(label)
self.value_text = urwid.Text(default_value)
self.widget = urwid.Columns([
('fixed', len(label), self.label_text),
self.value_text
])
super().__init__(self.widget)
def set_value(self, value):
self.value_text.set_text(value)
python
import urwid
class MyCustomWidget(urwid.WidgetWrap):
def __init__(self, text):
self.text = text
widget = urwid.Text(self.text)
widget = urwid.AttrMap(widget, 'widget_text')
super().__init__(widget)
def selectable(self):
return True
def keypress(self, size, key):
if key == 'enter':
self.text = "Enter key pressed"
self._invalidate()
return key
class CustomTextBox(urwid.WidgetWrap):
def __init__(self, label, default_value):
self.label_text = urwid.Text(label)
self.value_text = urwid.Text(default_value)
self.widget = urwid.Columns([
('fixed', len(label), self.label_text),
self.value_text
])
super().__init__(self.widget)
def set_value(self, value):
self.value_text.set_text(value)
def exit_handler(key):
if key in ('q', 'Q'):
raise urwid.ExitMainLoop()
if __name__ == '__main__':
custom_widget = MyCustomWidget("Hello, World!")
custom_textbox = CustomTextBox("Name: ", "John Doe")
main_widget = urwid.Pile([
custom_widget,
custom_textbox,
urwid.Text("Press 'Enter' in MyCustomWidget to update it"),
urwid.Text("Press 'q' to exit")
])
palette = [('widget_text', 'light green,bold', '')]
loop = urwid.MainLoop(main_widget, palette, unhandled_input=exit_handler)
loop.run()