I'm using wxPython to create a GUI app. Right now I'm using a wx.CheckListBox to display options with check boxes, but I'd like the text in the CheckListBox to be formatted using HTML. What's the best way to go about this?
+2
A:
Replace wxCheckListBox
with wxHtmlWindow
and use wxpTag
for the check boxes.
Here is some code to get you started.
import wx
import wx.lib.wxpTag
class HtmlCheckListBox(wx.html.HtmlWindow):
def __init__(self, parent, choices=None):
wx.html.HtmlWindow.__init__(self, parent)
check_box = """
<wxp module="wx" class="CheckBox">
<param name="id" value="%d">
</wxp>
"""
self._ids = dict()
if choices:
items = list()
for c, choice in enumerate(choices):
i = wx.NewId()
self._ids[i] = c
items.append((check_box % i) + choice)
self.SetPage("<hr>".join(items))
self.Bind(wx.EVT_CHECKBOX, self.OnCheck)
def OnCheck(self, event):
print "item:", self._ids[event.Id], "checked:", event.Checked()
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.options = HtmlCheckListBox(
self,
[
"<i>one</i>",
"<b>two</b>",
"<u>three</u>"
]
)
app = wx.PySimpleApp()
app.TopWindow = TestFrame()
app.TopWindow.Show()
app.MainLoop()
Toni Ruža
2010-10-27 22:35:13
Awesome! Thank you.
Ben Morris
2010-10-27 22:59:06