2010-10-27 52 views
2

我正在使用wxPython來創建一個GUI應用程序。現在我正在使用wx.CheckListBox來顯示帶有複選框的選項,但是我希望使用HTML格式化CheckListBox中的文本。什麼是最好的方式去做這件事?wxPython與HTML的CheckListBox

回答

2

wxCheckListBox替換爲wxHtmlWindow,並使用wxpTag作爲複選框。

下面是一些讓你開始的代碼。

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

太棒了!謝謝。 – 2010-10-27 22:59:06