Everything是windows的一个快速搜索工具. 基本上转移到Linux上来后,没有怎么用过. 一直在用Gnome-Do,感觉还可以. 这个程序只是用来练习wxPython用的,目前还只是一个很简单的版本. 当然,后端用的是mlocate, 这个在Linux查找原理与everything基本一样,不过命令行. 而我只是写了一个前端GUI而已.

以下是初步代码, 后续会一直完完善.

 1 #/usr/bin/python
2 #-*-<coding=UTF-8>-*-
3
4 """
5 本例为windows下everything程序的linux版本.后端基于locate实现.
6 """
7
8 import wx
9 import os
10 import subprocess
11
12 class GuiMainFrame(wx.Frame):
13
14 def __init__(self):
15 wx.Frame.__init__(self,parent=None,id=-1,title="",pos=wx.DefaultPosition,size=wx.DefaultSize)
16
17 #添加面板.
18 panel = wx.Panel(self)
19
20 #创建菜单栏
21 menubar = wx.MenuBar()
22
23 #File menu
24 fileMenu = wx.Menu()
25 fileMenu.Append(-1,"&Open","")
26 menubar.Append(fileMenu,"&File")
27
28 #Edit menu
29 editMenu = wx.Menu()
30 editMenu.Append(-1,"&Copy","")
31 menubar.Append(editMenu,"&Edit")
32
33 #Help/About menu
34 helpMenu = wx.Menu()
35 helpMenu.Append(-1,"About","")
36 menubar.Append(helpMenu,"&Help")
37
38 #调用SetMenuBar,使其在框架中显示出来
39 self.SetMenuBar(menubar)
40
41 #在面板中添加查找输入框
42 #filterInput = wx.TextCtrl(panel,-1,"")
43 self.filter = wx.SearchCtrl(panel,style=wx.TE_PROCESS_ENTER)
44 self.filter.Bind(wx.EVT_TEXT_ENTER,self.DoSearch)
45 #self.filter.Bind(wx.EVT_TEXT,self.DoSearch)  #这个会导致程序长时间无响应,所以还在找更有效率的方法.
46
47 #在面板中添加类型选择框
48 typeList=["all:*.*","document:*.doc,*.xls,*.ppt","audio:*.mp3","vedio:*.rmvb,*.mkv","application:*.exe"]
49 fileType = wx.ComboBox(panel,-1,"",choices=typeList)
50
51 #在面板中添加输出结果显示框
52 self.multiText = wx.TextCtrl(panel,-1,"",style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER)
53 self.multiText.SetMinSize((800,600))
54
55 #添加状态栏,是否要加入到sizer中管理.
56 statusbar = self.CreateStatusBar()
57
58 #管理布局.创建两个sizer,主sizer管理filterSizer,结果显示框两个控件
59 #filterSizer管理查找输入框和类型选择框
60 mainSizer = wx.BoxSizer(wx.VERTICAL)
61
62 filterSizer = wx.GridSizer(rows=1,cols=2)
63 filterSizer.Add(self.filter,0,wx.EXPAND)
64 filterSizer.Add(fileType,0,wx.EXPAND)
65
66 #这句话导致文本框显示有空隙. 为什么不能这样用? menubar是否不需要添加进mainSizer
67 #mainSizer.Add(menubar)
68 mainSizer.Add(filterSizer,0,wx.EXPAND)
69 mainSizer.Add(self.multiText,2,wx.EXPAND|wx.ALL)
70 #frame中创建的statusbar,不需要添加到sizer中进行管理.
71 #mainSizer.Add(statusbar,0,wx.EXPAND)
72
73 #这个是关键之处,将sizer与frame关联起来.
74 panel.SetSizer(mainSizer)
75 mainSizer.Fit(self)
76
77 def DoSearch(self,event):
78 pattern = self.filter.GetValue()
79 print pattern
80 cmd = "/usr/bin/locate"
81 arg1 = "-i"
82 arg2 = "-d"
83 arg3 = "/var/lib/mlocate/mlocate.db"
84 arg4 = pattern
85
86 p1=subprocess.Popen([cmd,arg1,arg2,arg3,arg4],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
87 (stdoutdata,stderrdata) = p1.communicate()
88 #stdoutdata = "Just test"
89 self.multiText.SetValue(stdoutdata)
90
91 if __name__ == "__main__":
92 app = wx.PySimpleApp()
93 frame = GuiMainFrame()
94 frame.Show()
95 app.MainLoop()
 

Everything:速度最快的文件名搜索工具(Linux版本) 转的更多相关文章

  1. Everything:速度最快的文件名搜索工具

    http://xbeta.info/everything-search-tool.htm Everything(官网|中文主页|教程)是速度最快的文件名搜索软件.其速度之快令人震惊,百G硬盘几十万个文 ...

  2. [转帖]推荐一款比 Find 快 10 倍的搜索工具 FD

    推荐一款比 Find 快 10 倍的搜索工具 FD https://www.hi-linux.com/posts/15017.html 试了下 很好用呢. Posted by Mike on 2018 ...

  3. 一个比ack速度快n倍的代码搜索工具: ag

    一个比ack速度快n倍的代码搜索工具:  ag 银搜索者(The Silver Searcher) 一个类似于代码搜索工具ack,着重于速度. Github:   https://github.com ...

  4. 揭开Faiss的面纱 探究Facebook相似性搜索工具的原理

    https://www.leiphone.com/news/201703/84gDbSOgJcxiC3DW.html 本月初雷锋网报道,Facebook 开源了 AI 相似性搜索工具 Faiss.而在 ...

  5. 推荐-Everything搜索工具

    简介: windows操作系统下极其强大的文件搜索工具. 下载: https://www.voidtools.com/downloads/ 推荐理由: 速度之快难以想象,日常工作必备工具之一. 发现的 ...

  6. Linux 命令行下搜索工具大盘点,效率提高不止一倍!

    在 Linux 命令行下进行文本关键字的搜索,大家肯定第一时间会想到 grep 命令.grep 命令确实十分强大,但如果需要用到它更加灵活的功能时,可能命令就会显得十分复杂. 于是,为了简化 grep ...

  7. FileSeek文件内容搜索工具下载

    Windows 内建的搜索功能十分简单,往往不能满足用户的需要.很多的第三方搜索工具因此诞生,比如 Everything,Locate32等. 而FileSeek也是一款不错的搜索工具,其不同于其他搜 ...

  8. Linux 下的类似Windows下Everything的搜索工具

    Windows NTFS有个超级快的搜索工具Everything,非常好用,Linux下有几个类似的命令行工具,太难用了,推荐一个catfish,类似Everything,有GUI,可以自定义一个快捷 ...

  9. [linux] grep 文本搜索工具

    grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...

随机推荐

  1. 抛弃百度UMEditor,拥抱summernote (解决上传文件又慢又卡的问题)

    由于一些项目上的原因以及相关因素,我们使用其他富文本编辑器替代了UMEditor 本来用CKEditor,但是团队觉得使用起来很不顺手,尤其图片上传十分不爽,功能复杂但是使用起来比较麻烦 后来我们又替 ...

  2. [na]IP分片抓包实验

    这两点比较重要 1.IP+ICMP+DATA = 1500字节 2.ping size指定的是data的大小. 3,可以ping大包+不分片检测mtu(分片发生在出口,如果包尺寸大于接口ip mtu, ...

  3. 【Unity】4.1 创建组件

    分类:Unity.C#.VS2015 创建日期:2016-04-05 一.简介 组件(Component)在Unity游戏开发工作中非常重要,可以说是实现一切功能所必需的. 1.游戏对象(Game O ...

  4. TensorFlow学习笔记(8)--网络模型的保存和读取【转】

    转自:http://blog.csdn.net/lwplwf/article/details/62419087 之前的笔记里实现了softmax回归分类.简单的含有一个隐层的神经网络.卷积神经网络等等 ...

  5. MediaType是application/x-www-form-urlencoded的接口测试方法

    先看接口: @POST @Path("/deleteById") //@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaTy ...

  6. shell快捷方式总结

    Linux使用Shell时总是有各种不太方便,需要对输入的命令行做编辑.跳转.这里整理下我遇到的Shell下快捷键. 注意下文中所有的ctrl表示键盘中的控制按键,所有的ctrl + x的格式都是同时 ...

  7. git file mode change

    近期在做ffmpeg版本合并时发现,TortoiseGit的Check for Modifications的修改对话框中有未修改的问题,直接导出diff,会有类似下面的输出: compat/plan9 ...

  8. Beginning SDL 2.0(5) 基于MFC和SDL的YuvPlayer

    本文是在“Beginning SDL 2.0(4) YUV加载及渲染”(以下简称BS4)基础上做的功能完善,如果你对之间介绍的内容了解不多,麻烦先阅读之前的内容. 本文主要介绍如何完成一个基于MFC和 ...

  9. 【Ubuntu】ubuntu系统下python3和python2环境自由切换

    shell里执行: sudo update-alternatives --install /usr/bin/python python /usr/local/lib/python2.7 100sudo ...

  10. Python(五)之迭代器和列表解析

    Python迭代器和列表解析 迭代器 例如: In [1]: l1 = [1,2,3,4,5] dir(i1)可以看到内置方法'__iter__' 生成一个迭代器: l1.__iter__,或i2 = ...