wxpython搜索功能wx.SearchCtrl

先创建搜索框,这里的wx.TE_PROCESS_ENTER会使搜索框接收回车事件,

self.search = wx.SearchCtrl(self.right_board, -1, style=wx.TE_PROCESS_ENTER,size=(130,-1))
self.search.SetHint('Search')  # 设置Hint

Bind一下回车和执行的操作函数self.search_text()

self.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN,self.search_text)

在__init__定义几个变量

self.search_result = []
        self.pre_search_selection = 0
        self.pre_keyword = ''

这里最后的实现效果可以循环展示搜索结果

def search_text(self, event):
   print('搜索文本!')
   keyword = event.GetString()
   if keyword == self.pre_keyword:
       if self.pre_search_selection == len(self.search_result)-1:
           self.pre_search_selection = 0
       else:
           self.pre_search_selection += 1
   else:
       self.pre_keyword = keyword
       text = self.text.GetValue()
       self.search_result = [i.span() for i in re.finditer(keyword, text)]
       self.pre_search_selection = 0

   if self.search_result:
       info_text = '{0}/{1}个匹配项'.format(str(self.pre_search_selection+1), str(len(self.search_result)))
       self.search_info.SetLabelMarkup("<span color='GREY'>"+info_text+"</span>")
       self.text.SetSelection(*self.search_result[self.pre_search_selection])
   else:
       info_text = '0个匹配项'
       self.search_info.SetLabelMarkup("<span color='GREY'>" + info_text + "</span>")

最后可以实现如下图的效果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值