Discussion:
[Urwid] terminal widget question
Graham Clark
2015-02-19 02:17:03 UTC
Permalink
Hi everyone - I'm an urwid novice. I want to use the terminal widget in an
application so I tweaked the example pop_up.py and added two columns, with
the terminal on the right. When I click the button to open the pop-up
dialog, the terminal contents shift down. When I close the pop-up, they
shift back up. Can anyone help me understand how to prevent this? I've
pasted the program below.

Thanks!
Graham

#!/usr/bin/python

import urwid

class PopUpDialog(urwid.WidgetWrap):
"""A dialog that appears with nothing but a close button """
signals = ['close']
def __init__(self):
close_button = urwid.Button("that's pretty cool")
urwid.connect_signal(close_button, 'click',
lambda button:self._emit("close"))
pile = urwid.Pile([urwid.Text(
"^^ I'm attached to the widget that opened me. "
"Try resizing the window!\n"), close_button])
fill = urwid.Filler(pile)
self.__super.__init__(urwid.AttrWrap(fill, 'popbg'))


class ThingWithAPopUp(urwid.PopUpLauncher):
def __init__(self):
self.__super.__init__(urwid.Button("click-me"))
urwid.connect_signal(self.original_widget, 'click',
lambda button: self.open_pop_up())

def create_pop_up(self):
pop_up = PopUpDialog()
urwid.connect_signal(pop_up, 'close',
lambda button: self.close_pop_up())
return pop_up

def get_pop_up_parameters(self):
return {'left':0, 'top':1, 'overlay_width':32, 'overlay_height':7}


fill = urwid.Columns([urwid.Filler(ThingWithAPopUp()),
urwid.Terminal(["ls"])])
loop = urwid.MainLoop(
fill,
[('popbg', 'white', 'dark blue')],
pop_ups=True)
loop.run()

Continue reading on narkive:
Loading...