用python Tkinter编写简单的文件搜索工具

 
 
# -*- coding:utf-8 -*-
# 跨平台的文件搜索工具

from Tkinter import *
import tkMessageBox
import tkFileDialog
import os
import fnmatch
from ScrolledText import ScrolledText

def func():
    str1 = ent1.get()#得到输入框内的值
    str2 = ent2.get()
    if not (str1 and str2) :
        #信息框的标题和内容
        tkMessageBox.showinfo('温馨提示','请先输入查询的关键字和文件类型再选择文件夹')
        return
    fn = tkFileDialog.askdirectory()#选择一个文件夹的路径
    if not fn:
        return
    else:
        listbox.delete(0,END)#删除之前的值,从0到END
        fnList = os.walk(fn)# 获取当前路径,当前路径下的目录,以及文件
        for root,dirs,files in fnList:
            for i in fnmatch.filter(files,str2):#过滤出以str2为结尾的files
                f = open(root + '/' + i).read()
                if str1 in f: # 如果str1在这个文件中,则将路径插入
                    listbox.insert(END,root+'/'+i)#将路径插入到末尾


def func2(e):
     if not listbox.curselection():#取双击的坐标
         return
     window = Tk()
     window.title('文件查看')
     #window.geometry('600X200+600+300')
     text = ScrolledText(window,width=100)#带滚动条的多行文本框
     text.grid()
     # 获取点击的值
     path = listbox.get(listbox.curselection(),last=None)
     fn = open(path)
     text.insert(END,fn.read())#从末尾插入
     fn.close()


root = Tk() #创建一个窗口
root.title('文件搜索器')# 窗口的标题
root.geometry('+600+300')# 窗口的大小、位置

Label(root,text='关键词').grid()# 控件,布局方式有两种:网格式和
ent1 = Entry(root)# 输入框
ent1.grid(row=0,column=1)

Label(root,text='文件类型').grid(row=0,column=2)
ent2 = Entry(root)
ent2.grid(row=0,column=3)

btn = Button(root,text='选择文件',command=func)#创建一个按钮
btn.grid(row=0,column=4)

#var1 = StringVar()
listbox = Listbox(root,width=80)# 创建一个列表框控件,绑定一个变量
listbox.bind('<Double-Button-1>',func2) #绑定一个双击触发事件
listbox.grid(row=1,column=0,columnspan=5)#columnspan能让一个控件跨过多个控件的范围

root.mainloop()# 消息循环

#GUI程序开发过程中,1界面的开发;2完善功能;
#事件:某个动作触发某个方法

效果图:
双击第一个文件:
 
 
 

猜你喜欢

转载自blog.csdn.net/qq_15727809/article/details/76288528