텍스트 문자열의 특정 부분을 Urwid에서 굵게 표시해야합니다. 이를 위해 하나의 Text 위젯을 구현할 수 있습니까? 예 :텍스트 부분이 굵은 글꼴로 표시됩니다.
text = u"Employees - %s, Males - %s, Females - %s" %(emp, male, female)
남성 및 여성의 숫자 값은 굵게 표시해야합니다.
텍스트 문자열의 특정 부분을 Urwid에서 굵게 표시해야합니다. 이를 위해 하나의 Text 위젯을 구현할 수 있습니까? 예 :텍스트 부분이 굵은 글꼴로 표시됩니다.
text = u"Employees - %s, Males - %s, Females - %s" %(emp, male, female)
남성 및 여성의 숫자 값은 굵게 표시해야합니다.
이런 종류의 작업을 수행하려면 데이터 위젯 using the urwid.WidgetWrap을 래핑하는 사용자 정의 위젯을 작성하여 데이터 구조를 아는 위젯을 만드는 방식을 좋아합니다.
register a palette for the bold attributes to apply도 필요합니다. 나는이 일을해야한다고 생각
import urwid
# create a palette defining bold attribute
PALETTE = [
('bold', 'bold', ''),
]
class BoldValuesList(urwid.WidgetWrap):
"""Show a list of key values, with values in bold
"""
def __init__(self, values):
self.separator = u', '
self.values = values
self.text = urwid.Text(self._build_text())
super(BoldValuesList, self).__init__(self.text)
def _build_text(self):
# build text markup -- see:
# http://urwid.org/manual/displayattributes.html#text-markup
texts = []
for i, (k, v) in enumerate(self.values):
texts.append(u'%s: ' % k)
texts.append(('bold', u'%s' % v))
if i < len(self.values) - 1:
texts.append(self.separator)
return texts
def show_or_exit(key):
"Exit if user press Q or Esc"
if key in ('q', 'Q', 'esc'):
raise urwid.ExitMainLoop()
txt = BoldValuesList([
(u'Employees', 45),
(u'Males', 20),
(u'Females', 25),
])
filler = urwid.Filler(txt, 'top')
# create the main loop wiring the widget, the palette and input handler
loop = urwid.MainLoop(filler, PALETTE, unhandled_input=show_or_exit)
loop.run()
:
여기에 완벽하게 작동하는 샘플 코드이다 엘리야가 제안
text_items = [u"Employees - ", ('bold', emp),
u", Males - ", ('bold', male),
u", Females - ", ('bold', female)]
text = urwid.Text(text_items)
당신은 굵은 텍스트 팔레트를 공급하기 위해 당연히해야합니다.