def __init__(self, text, width, host_view, loop = None):
self.running = False
self.lock = EasyLock()
self.loop = loop
self.overlay = urwid.Overlay(
urwid.LineBox(urwid.Text(text)), host_view, #urwid.SolidFill(),
'center', width, 'middle', None)
urwid.Frame.__init__(self, self.overlay)
python类Overlay()的实例源码
def on_stress_menu_open(self, w):
"""Open stress options"""
self.original_widget = urwid.Overlay(self.stress_menu.main_window,
self.original_widget,
('relative', self.left_margin),
self.stress_menu.get_size()[1],
('relative', self.top_margin),
self.stress_menu.get_size()[0])
def on_help_menu_open(self, w):
"""Open Help menu"""
self.original_widget = urwid.Overlay(self.help_menu.main_window,
self.original_widget,
('relative', self.left_margin),
self.help_menu.get_size()[1],
('relative', self.top_margin),
self.help_menu.get_size()[0])
def on_about_menu_open(self, w):
"""Open About menu"""
self.original_widget = urwid.Overlay(self.about_menu.main_window,
self.original_widget,
('relative', self.left_margin),
self.about_menu.get_size()[1],
('relative', self.top_margin),
self.about_menu.get_size()[0])
def on_temp_sensors_menu_open(self, w):
"""Open About menu"""
self.original_widget = urwid.Overlay(self.temp_sensors_menu.main_window,
self.original_widget,
('relative', self.left_margin),
self.temp_sensors_menu.get_size()[1],
('relative', self.top_margin),
self.temp_sensors_menu.get_size()[0])
def summon():
"""summons the classic bsod"""
sys_info = " {} {} ".format(platform.system(), platform.release())
error2 = "{:02x}".format(random.randint(0, 17)).upper()
error4 = "{:04x}".format(random.randint(0, 4095)).upper()
error8 = "{:08x}".format(random.randint(0, 68719476736)).upper()
message = """
An error has occurred. To continue:
Press Enter to return to {}, or
Press CTRL+ALT+DEL to restart your computer. If you do this,
you will lose any unsaved information in all open applications.
Error: {} : {} : {}
""".format(platform.system(), error2, error4, error8)
end = "Press any key to continue "
bg_map = urwid.AttrMap(urwid.SolidFill(' '), 'bg')
body = urwid.Filler(
urwid.AttrMap(
urwid.Text(message, align='left'),
'text'))
body_text = urwid.Overlay(
body, bg_map,
'center', 63,
'middle', 10,
63, 10)
continue_ln = urwid.AttrMap(
urwid.Edit(end, align='center'),
'text')
title_txt = urwid.AttrMap(
urwid.Text(sys_info, align='center'),
'title')
fill_scrn = urwid.Overlay(
urwid.Filler(title_txt), bg_map,
'center', len(sys_info),
'middle', 1,
len(sys_info), 1)
text_stack = urwid.Filler(urwid.Pile([(1, fill_scrn),
(10, body_text),
('pack', continue_ln)]))
bg_fill = urwid.AttrMap(text_stack, 'bg')
loop = urwid.MainLoop(bg_fill, PALETTE, input_filter=exitscreen)
loop.screen.set_terminal_properties(colors=256)
loop.run()
def setup_view(self):
fonts = urwid.get_all_fonts()
# setup mode radio buttons
self.font_buttons = []
group = []
utf8 = urwid.get_encoding_mode() == "utf8"
for name, fontcls in fonts:
font = fontcls()
if font.utf8_required and not utf8:
rb = self.create_disabled_radio_button(name)
else:
rb = self.create_radio_button(group, name, font,
self.set_font_event)
if fontcls == urwid.Thin6x6Font:
chosen_font_rb = rb
exit_font = font
self.font_buttons.append( rb )
# Create BigText
self.bigtext = urwid.BigText("", None)
bt = SwitchingPadding(self.bigtext, 'left', None)
bt = urwid.AttrWrap(bt, 'bigtext')
bt = urwid.Filler(bt, 'bottom', None, 7)
bt = urwid.BoxAdapter(bt, 7)
# Create chars_avail
cah = urwid.Text("Characters Available:")
self.chars_avail = urwid.Text("", wrap='any')
ca = urwid.AttrWrap(self.chars_avail, 'chars')
chosen_font_rb.set_state(True) # causes set_font_event call
# Create Edit widget
edit = self.create_edit("", "Urwid "+urwid.__version__,
self.edit_change_event)
# ListBox
chars = urwid.Pile([cah, ca])
fonts = urwid.Pile([urwid.Text("Fonts:")] + self.font_buttons,
focus_item=1)
col = urwid.Columns([('fixed',16,chars), fonts], 3,
focus_column=1)
bt = urwid.Pile([bt, edit], focus_item=1)
l = [bt, urwid.Divider(), col]
w = urwid.ListBox(urwid.SimpleListWalker(l))
# Frame
w = urwid.AttrWrap(w, 'body')
hdr = urwid.Text("Urwid BigText example program - F8 exits.")
hdr = urwid.AttrWrap(hdr, 'header')
w = urwid.Frame(header=hdr, body=w)
# Exit message
exit = urwid.BigText(('exit'," Quit? "), exit_font)
exit = urwid.Overlay(exit, w, 'center', None, 'middle', None)
return w, exit
def setup_view(self):
fonts = urwid.get_all_fonts()
# setup mode radio buttons
self.font_buttons = []
group = []
utf8 = urwid.get_encoding_mode() == "utf8"
for name, fontcls in fonts:
font = fontcls()
if font.utf8_required and not utf8:
rb = self.create_disabled_radio_button(name)
else:
rb = self.create_radio_button(group, name, font,
self.set_font_event)
if fontcls == urwid.Thin6x6Font:
chosen_font_rb = rb
exit_font = font
self.font_buttons.append( rb )
# Create BigText
self.bigtext = urwid.BigText("", None)
bt = SwitchingPadding(self.bigtext, 'left', None)
bt = urwid.AttrWrap(bt, 'bigtext')
bt = urwid.Filler(bt, 'bottom', None, 7)
bt = urwid.BoxAdapter(bt, 7)
# Create chars_avail
cah = urwid.Text("Characters Available:")
self.chars_avail = urwid.Text("", wrap='any')
ca = urwid.AttrWrap(self.chars_avail, 'chars')
chosen_font_rb.set_state(True) # causes set_font_event call
# Create Edit widget
edit = self.create_edit("", "Urwid "+urwid.__version__,
self.edit_change_event)
# ListBox
chars = urwid.Pile([cah, ca])
fonts = urwid.Pile([urwid.Text("Fonts:")] + self.font_buttons,
focus_item=1)
col = urwid.Columns([('fixed',16,chars), fonts], 3,
focus_column=1)
bt = urwid.Pile([bt, edit], focus_item=1)
l = [bt, urwid.Divider(), col]
w = urwid.ListBox(urwid.SimpleListWalker(l))
# Frame
w = urwid.AttrWrap(w, 'body')
hdr = urwid.Text("Urwid BigText example program - F8 exits.")
hdr = urwid.AttrWrap(hdr, 'header')
w = urwid.Frame(header=hdr, body=w)
# Exit message
exit = urwid.BigText(('exit'," Quit? "), exit_font)
exit = urwid.Overlay(exit, w, 'center', None, 'middle', None)
return w, exit