当前位置:
首页 > temp > python入门教程 >
-
让你硬盘中的秘密文件(私人学习资料)无处可藏,Python开发桌面程序——文件
本次主要内容
- 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)
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数