本次主要內容
- tkinter 的使用
- 桌面應用程式開發
開發環境
- 解釋器: Python 3.8.8 | Anaconda, Inc.
- 編輯器: 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)

對于文章有疑問,或者想要Python相關資料、原始碼的同學也可以點這里
學Python爬蟲不就是為了這個嗎?這是一個連域名都是看小姐姐的網站,看過都說刑!
點這里即可免費在線觀看
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/339168.html
標籤:python
上一篇:正則運算式 (一)(python) ——21天養成好習慣
下一篇:C#-嵌套的LINQ查詢
