讓你硬盤中的秘密文件(私人學習資料)無處可藏,Python開發桌面程序——文件搜索工具


本次主要內容

  • tkinter 的使用
  • 桌面應用程序開發

開發環境

  1. 解釋器: Python 3.8.8 | Anaconda, Inc.
  2. 編輯器: pycharm 專業版

先演示效果

開始代碼,先導入模塊

import tkinter as tk
from tkinter import filedialog
import os

 

創建窗口

root = tk.Tk()
root.geometry('600x300')
root.title('學習資料搜索工具')

root.mainloop()

 

搜索欄

search_frame = tk.Frame(root)
search_frame.pack()

tk.Label(search_frame, text='關鍵字:').pack(side=tk.LEFT, padx=10, pady=10)
key_entry = tk.Entry(search_frame)  # 創建一個輸入框
key_entry.pack(side=tk.LEFT, padx=10, pady=10)  # 將輸入框顯示到界面
tk.Label(search_frame, text='文件類型:').pack(side=tk.LEFT, padx=10, pady=10)
type_entry = tk.Entry(search_frame)
type_entry.pack(side=tk.LEFT, padx=10, pady=10)
button = tk.Button(search_frame, text='搜索')
button.pack(side=tk.LEFT, padx=10, pady=10)

 

顯示框

list_box = tk.Listbox(root)
list_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

 

點擊搜索按鈕

def search():
    print('按鈕被點擊了')

button.config(command=search)

 

1. 獲取關鍵字、文件類型

key = key_entry.get()
file_type = type_entry.get()
print(key, file_type)

 

2. 實現搜索功能

dir_path = filedialog.askdirectory()
print(dir_path)  # 遍歷文件,實現搜索功能
file_list = os.walk(dir_path)
for root_path, dirs, files in file_list:
    # 目錄路徑,目錄下的子目錄,目錄下的文件
    # print(root_path, dirs, files)
    for file in files:
        # 過濾文件類型,搜索關鍵字
        if type_entry:  # py 如果輸入了類型,就進行過濾,如果沒有輸入,就不過濾類型
            if file.endswith(file_type):
                # 搜索關鍵字
                content = open(root_path + '/' + file, mode='r', encoding='utf-8-sig').read()
                if key in content:
                    print(root_path + '/' + file)
                    # 把結果顯示到界面上
                    list_box.insert(tk.END, root_path + '/' + file)

 

創建滾動窗口並布局到頁面上

sb = tk.Scrollbar(root)
sb.pack(side=tk.RIGHT, fill=tk.Y)
sb.config(command=list_box.yview)
list_box.config(yscrollcommand=sb.set)

 

觸發綁定事件

list_box.bind('<Double-Button-1>', list_click)

 

1. 獲取到選中的內容

def list_click(event):
    print('列表框組件的內容被點擊了')
    index = list_box.curselection()[0]
    path = list_box.get(index)
    print(path)

 

2. 讀取選中路徑的內容

content = open(path, mode='r', encoding='utf-8').read()
print(content)

 

3. 將內容顯示到新的窗口

top = tk.Toplevel(root)
filename = path.split('/')[-1]
top.title(filename)
text = tk.Text(top)
text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
text.insert(tk.END, content)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM