开发者

wxPython CheckListBox with HTML

开发者 https://www.devze.com 2023-01-22 02:32 出处:网络
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 usin开发者_如何学Gog HTM

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 usin开发者_如何学Gog HTML. What's the best way to go about this?


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()
0

精彩评论

暂无评论...
验证码 换一张
取 消