iT邦幫忙

0

如何在 wx.CheckListBox 使用搜尋

  • 分享至 

  • xImage

我嘗試自已做一個 dialog,實現像 Excel篩選裡面的功能。
當搜尋列輸入內容後,下面的列表會相對應的變更。並且下表是可複選。
Excel Example

目前已經把dialog外觀做好了(如下),但找不到方法實現搜尋的功能。
My customized dialog
預想是用wx.SearchCtrl的內容變更觸發wx.CheckListBox更新。
但找不到方法,只有找到ListBox有clear的方法。
源碼如下…

class MyFrame1 (wx.Dialog):
    
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, -1)
        lst = ['apple','box','cat','dog','eye']
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.search = wx.SearchCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
        self.message = wx.StaticText(self, -1, "Pick some fruit")
        self.clb = wx.CheckListBox(self, -1, choices = lst)
        self.chbox = wx.CheckBox(self, -1, 'Select all')
        self.btns = self.CreateSeparatedButtonSizer(wx.OK | wx.CANCEL)
        self.Bind(wx.EVT_CHECKBOX, self.EvtChBox, self.chbox)
        sizer.Add(self.message, 0, wx.ALL | wx.EXPAND, 5)
        sizer.Add(self.search, 0, wx.ALL|wx.EXPAND, 5 )
        sizer.Add(self.clb, 1, wx.ALL | wx.EXPAND, 5)
        sizer.Add(self.chbox, 0, wx.ALL | wx.EXPAND, 5)
        sizer.Add(self.btns, 0, wx.ALL | wx.EXPAND, 5)
        self.SetSizer(sizer)

    def EvtChBox(self, event):
        state = self.chbox.IsChecked()
        for i in range(self.clb.GetCount()):
            self.clb.Check(i, state)

    def OnExit(self, event):
        self.Close()

if __name__ == '__main__':
    app = wx.App() 
    frm = MyFrame1(None) 
    frm.Show()
    app.MainLoop() 
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
一級屠豬士
iT邦大師 1 級 ‧ 2022-04-08 20:20:11
最佳解答

https://wxpython.org/Phoenix/docs/html/wx.CheckListBox.html
這個頁面有 Class Hierarchy 按下後可以展開物件的繼承關係
https://ithelp.ithome.com.tw/upload/images/20220408/20050647dPg7AOI2Ab.png

可以看到 wx.CheckListBox 往上是 wx.ListBox, 再往上有 wx.ItemContainer
https://wxpython.org/Phoenix/docs/html/wx.ItemContainer.html#wx.ItemContainer.Clear

Clear Method 是在 wx.ItemContainer. wx.ListBox 是繼承過來的.
後續你再自己嘗試看看.
Update 可以看成是 Clear + Append 組合.

play9091 iT邦新手 5 級 ‧ 2022-04-09 16:20:13 檢舉

感謝給預關鍵點提示,我往這方向去嘗試看看。

我要發表回答

立即登入回答