工作中的小尝试

需求来源

在目前的工作中,需要经常打开特定的几个文件夹检索自己需要的文件,由于在每次重新检索时都要重新回到桌面上点击文件夹搜索,所以效率很低,同时很烦人(由于有时需要同时检索几个相关的文件,不可能只打开一个窗口,所以使用单一的常驻窗口的方法也不太可行)。基于上述的这种情况,我打算整合这几个路径去做一个常用路径的搜索窗口,这样每次检索的时候就不需要再去打开特定的文件夹,或许这样会方便一些。文章记录自己的工作之后的一些学习,作为学习日记。

程序编写

由于电脑装有python,于是尝试使用python解决这个问题

程序的运作思路

界面使用python 中的tkinter库,编写,主要应该是由文件夹名称,搜索框和按钮三部分组成
其次在往搜索框中填入关键词时调用windows中的文件检索功能,检索文件,并且打开搜索窗口显示结果(因为文件包含pdf,文档,图片等多种类型,目前不知道如何去建造一个更好的预览类型解决这个问题,所以只能利用系统自带的功能解决)

程序

from tkinter import *
import subprocess
import tkinter.messagebox as msg

root = Tk()
root.columnconfigure(0, weight=1)
a = list()
a = ['一', '二', '三', '四']
entry_list = []


def query_file(button_name):
    query_string = entry_list[button_name].get()
    if button_name==0:
        local_path = r'F:\learn,include,'  # r is raw for dealing with backslashes
    elif button_name==1:
        local_path = r'F:\电子书,include,'  # r is raw for dealing with backslashes
    elif button_name == 2:
        local_path = r'F:\迅雷下载,include,'  # r is raw for dealing with backslashes
    elif button_name == 3:
        local_path = r'F:\Program Files (x86),include,'  # r is raw for dealing with backslashes
    else:
        msg.showinfo('您点击了', button_name)
    #network_path = r'\\your\network\fold\path'

    # for a network location
    # subprocess.Popen(f'explorer /root,"search-ms:query={query_string}&crumb=location:{network_path}&"')

    # for a local folder
    subprocess.Popen(f'explorer /root,"search-ms:query={query_string}&crumb=location:{local_path}&"')


def cbClicked(cbname):
    print(entry_list[cbname].get())

    msg.showinfo('您点击了', cbname)


for i in range(len(a)):
    num = i + 1
    var_label = 'L' + str(num)
    var_label = Label(root, text=a[i])
    '''创建第一列的标签'''
    var_entry = 'E' + str(num)
    var_filename = 'N' + str(num)
    var_filename = StringVar()
    var_filename.set('*')
    var_entry = Entry(root, textvariable=var_filename)
    entry_list.append(var_entry)

    ''''创建第二列的文本框'''
    var_command = 'E' + str(num)
    var_command = Button(root, text='search', command=lambda arg=i: query_file(arg))
    ''''创建第三列的按键'''
    var_command.grid(row=i, column=2, sticky=N + S + W + E)
    var_entry.grid(row=i, column=1, sticky=N + S + W + E)
    var_label.grid(row=i, column=0, sticky=N + S + W + E)

root.mainloop()

在编写时遇到的问题

  1. 我被如何使得控件随着窗体变化而变化难住了#没有解决
    GUI界面已经创建完成,下面打算导入功能,首先是打开window资源管理器
  2. 搜索完成,代码来自于Stack Overflow,但是问题是现在不能实现在特定的文件夹搜索,问题解决,统一使用location 即可
import subprocess
query_string = 'file_name.png'
local_path = r'C:\Users\your_name\Pictures' # r is raw for dealing with backslashes
network_path = r'\\your\network\fold\path'
# for a network location
subprocess.Popen(f'explorer /root,"search-ms:query={query_string}&crumb=location:{network_path}&"')

#for a local folder
subprocess.Popen(f'explorer /root,"search-ms:query={query_string}&crumb=folder:{local_path}&"')
  1. 问题如何绑定动态参数,换了一个思路解决,通过将所有的Entry控件存在一个数组调用解决,问题初步解决

深入

  1. 完善 GUI界面,使得在拉大整个窗口时,控件能够同时变大
  2. 阅读subprocess文档,尝试理解原理
  3. 暂定

备注

文章仅供参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值