当前位置: 首页> 教育> 高考 > 杭州市建设网_腾讯科技微信小程序_合肥网络关键词排名_软文代发布

杭州市建设网_腾讯科技微信小程序_合肥网络关键词排名_软文代发布

时间:2025/7/10 1:38:54来源:https://blog.csdn.net/weixin_46704989/article/details/146163866 浏览次数:0次
杭州市建设网_腾讯科技微信小程序_合肥网络关键词排名_软文代发布

本文记录了尝试使用deepseek创建应用程序的过程,实现记录事件&时间的PC应用程序,包括创建代码、测试及调整。

目的:创建一个应用,用户输入文本提交,应用记录下时间和文本,数据留存在excel和应用程序中。

1. 使用deepseek生成代码

命令如下:

帮我写一个应用程序,实现的功能是,用户输入一段文字,然后应用程序会记录下输入的文字和时间,记录的数据会留在桌面的excel表格中。用户输入的文字和时间也会显示在应用程序的页面。使用python代码写,在win10的系统下可以运行。

2. 测试代码是否可运行

import tkinter as tk
from tkinter import messagebox, ttk
from datetime import datetime
import os
import openpyxldef save_to_excel(text, timestamp):# 获取桌面路径desktop = os.path.join(os.path.expanduser('~'), 'Desktop')file_path = os.path.join(desktop, 'user_input_records.xlsx')# 检查文件是否存在if not os.path.exists(file_path):# 创建新工作簿并添加标题wb = openpyxl.Workbook()ws = wb.activews.append(['时间', '用户输入'])else:wb = openpyxl.load_workbook(file_path)ws = wb.active# 添加新记录ws.append([timestamp, text])try:wb.save(file_path)except PermissionError:messagebox.showerror("错误", "请先关闭Excel文件再操作!")return Falsereturn Truedef submit_text():input_text = entry.get().strip()if not input_text:messagebox.showwarning("警告", "请输入内容!")returntimestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')if save_to_excel(input_text, timestamp):# 在列表框最前面插入新记录history_listbox.insert(0, f"{timestamp} - {input_text}")entry.delete(0, tk.END)def create_gui():window = tk.Tk()window.title("用户输入记录器")window.geometry("600x400")# 使用ttk样式style = ttk.Style()style.theme_use('clam')# 输入区域input_frame = ttk.Frame(window)input_frame.pack(pady=10, padx=10, fill=tk.X)ttk.Label(input_frame, text="输入内容:").pack(side=tk.LEFT)global entryentry = ttk.Entry(input_frame, width=40)entry.pack(side=tk.LEFT, padx=5)entry.bind('<Return>', lambda event: submit_text())  # 绑定回车键submit_btn = ttk.Button(input_frame, text="提交", command=submit_text)submit_btn.pack(side=tk.LEFT, padx=5)# 历史记录区域history_frame = ttk.Frame(window)history_frame.pack(pady=10, padx=10, fill=tk.BOTH, expand=True)ttk.Label(history_frame, text="历史记录:").pack(anchor=tk.W)global history_listboxhistory_listbox = tk.Listbox(history_frame, height=10, selectmode=tk.SINGLE,font=('Microsoft YaHei', 10))history_listbox.pack(fill=tk.BOTH, expand=True, pady=5)# 添加滚动条scrollbar = ttk.Scrollbar(history_listbox)scrollbar.pack(side=tk.RIGHT, fill=tk.Y)history_listbox.config(yscrollcommand=scrollbar.set)scrollbar.config(command=history_listbox.yview)# 退出按钮exit_btn = ttk.Button(window, text="退出", command=window.destroy)exit_btn.pack(pady=5)# 加载已有历史记录desktop = os.path.join(os.path.expanduser('~'), 'Desktop')file_path = os.path.join(desktop, 'user_input_records.xlsx')if os.path.exists(file_path):try:wb = openpyxl.load_workbook(file_path)ws = wb.activefor row in ws.iter_rows(min_row=2, values_only=True):if row[0] and row[1]:history_listbox.insert(0, f"{row[0]} - {row[1]}")except Exception as e:messagebox.showerror("错误", f"读取历史记录失败: {str(e)}")window.mainloop()if __name__ == "__main__":# 检查依赖库try:import openpyxlexcept ImportError:print("请先安装依赖库:pip install openpyxl")exit(1)create_gui()

3. 对代码进行打包

1)准备icon,将以上代码存为.py文件,在桌面创建一个文件夹【TextRecorder】,放入py文件和icon图标,icon图标命名为【app.ico】。

2)  环境变量检查,及必要库安装
按 ​Win + R 打开运行窗口,输入 cmd 打开命令行,执行以下命令确保没有问题:

# 升级pip
python -m pip install --upgrade pip# 安装必要库
pip install pyinstaller openpyxl# 验证安装
pyinstaller --version

如果以上的命令有无法运行的情况,可能出现的情况及解决方案如下:

情况1:xxx不是内部或外部命令,也不是可运行的程序 或批处理文件。

解决方案:环境变量配置有问题,需要到系统中重新配置环境变量的地址。容易出现的问题是找不到python的地址,通常的路径是:

C:\Users\你的用户名\AppData\Local\Programs\Python\Python310
C:\Users\你的用户名\AppData\Local\Programs\Python\Python310\Scripts

如果不是以上地址,在命令栏中输入以下命令,则显示python地址:

where python

实在找不到python就重装,重装时勾选 "Add Python to PATH"。

 情况2:单条命令行运行报错

解决方案:再执行一遍

3)代码打包

在项目文件夹【TextRecorder】中打开命令行:

  • 按住 Shift + 右键 → 选择 ​在此处打开 PowerShell 窗口
  • 输入“cmd”切换为CMD

执行打包命令:

# 进阶版(带图标,需确认图标文件名正确)
pyinstaller --onefile --noconsole --name "TextRecorder" --icon=app.ico text_recorder.py

4. 检查打包文件

  1. 打包完成后:

    • 打开项目文件夹中的 dist 子文件夹
    • 找到生成的 TextRecorder.exe 文件
  2. 测试运行:

    • 双击运行EXE文件
    • 检查桌面是否生成 user_input_records.xlsx

可能出现的问题:桌面未生成文件。

这个问题出现的原因是修改了桌面位置到非C盘,以上的python代码只会读取C盘下的桌面地址。

5. 增加历史记录删除功能

在使用应用程序时,如果输入错误想删除,则需要在应用程序中加上删除功能。而上面的代码是不支持的,调整后代码如下:

修改后问题:打开程序时,明显变慢。第一版的大小只有9M,第二版有200+M

import tkinter as tk
from tkinter import ttk, messagebox
import openpyxl
from datetime import datetime
import os# 获取桌面路径
DESKTOP_PATH = os.path.join(os.path.expanduser("~"), "Desktop")
FILE_PATH = os.path.join(DESKTOP_PATH, "records.xlsx")  # 强制保存到桌面
COLUMNS = ("timestamp", "content")def init_excel():if not os.path.exists(FILE_PATH):try:wb = openpyxl.Workbook()ws = wb.activews.append(["时间戳", "记录内容"])wb.save(FILE_PATH)print(f"已创建新文件于桌面:{FILE_PATH}")  # 调试信息except PermissionError:messagebox.showerror("错误", "无法在桌面创建文件,请检查写权限")class RecordApp:def __init__(self, root):self.root = rootself.root.title("桌面记录管理系统")# 显示文件路径path_frame = ttk.Frame(self.root)path_frame.pack(pady=5, fill=tk.X)ttk.Label(path_frame, text=f"数据文件位置:").pack(side=tk.LEFT)ttk.Label(path_frame, text=FILE_PATH, foreground="blue").pack(side=tk.LEFT)self.create_widgets()self.load_records()def create_widgets(self):# 输入区域input_frame = ttk.Frame(self.root, padding=(10, 5))input_frame.pack(fill=tk.X)ttk.Label(input_frame, text="新记录:").pack(side=tk.LEFT)self.entry = ttk.Entry(input_frame, width=50)self.entry.pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True)self.entry.bind("<Return>", lambda e: self.save_record())# 操作按钮btn_frame = ttk.Frame(self.root, padding=(10, 5))btn_frame.pack(fill=tk.X)ttk.Button(btn_frame, text="提交", command=self.save_record).pack(side=tk.LEFT)ttk.Button(btn_frame, text="删除选中", command=self.delete_selected).pack(side=tk.LEFT, padx=5)ttk.Button(btn_frame, text="刷新", command=self.load_records).pack(side=tk.LEFT)# 记录表格tree_frame = ttk.Frame(self.root)tree_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=5)self.tree = ttk.Treeview(tree_frame,columns=COLUMNS,show="headings",selectmode="browse",height=15)# 配置列self.tree.heading("timestamp", text="时间戳", anchor=tk.W)self.tree.heading("content", text="内容", anchor=tk.W)self.tree.column("timestamp", width=180, stretch=False)self.tree.column("content", width=500)# 滚动条vsb = ttk.Scrollbar(tree_frame, orient="vertical", command=self.tree.yview)self.tree.configure(yscrollcommand=vsb.set)# 布局self.tree.grid(row=0, column=0, sticky="nsew")vsb.grid(row=0, column=1, sticky="ns")tree_frame.grid_columnconfigure(0, weight=1)tree_frame.grid_rowconfigure(0, weight=1)def save_record(self):content = self.entry.get().strip()if not content:messagebox.showwarning("输入错误", "记录内容不能为空")returntimestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")try:wb = openpyxl.load_workbook(FILE_PATH)ws = wb.activews.append([timestamp, content])wb.save(FILE_PATH)self.entry.delete(0, tk.END)self.load_records()  # 静默刷新except PermissionError:messagebox.showerror("错误", "文件被占用,请关闭Excel后重试")except Exception as e:messagebox.showerror("错误", f"保存失败:{str(e)}")def load_records(self):for item in self.tree.get_children():self.tree.delete(item)try:wb = openpyxl.load_workbook(FILE_PATH)ws = wb.activerecords = []for row in ws.iter_rows(min_row=2):if row[0].value and row[1].value:records.append((row[0].value, row[1].value))# 按时间倒序records.sort(key=lambda x: datetime.strptime(x[0], "%Y-%m-%d %H:%M:%S"),reverse=True)for record in records:self.tree.insert("", tk.END, values=record)except FileNotFoundError:messagebox.showwarning("错误", "桌面文件丢失,正在尝试重建...")init_excel()def delete_selected(self):selected_item = self.tree.selection()if not selected_item:messagebox.showwarning("错误", "请先选择要删除的记录")returnitem_data = self.tree.item(selected_item, "values")confirm = messagebox.askyesno("确认删除",f"确定要永久删除这条记录吗?\n\n时间:{item_data[0]}\n内容:{item_data[1]}")if not confirm:returntry:wb = openpyxl.load_workbook(FILE_PATH)ws = wb.active# 精确匹配删除found = Falsefor row_idx in range(2, ws.max_row + 1):if (ws.cell(row=row_idx, column=1).value == item_data[0] and ws.cell(row=row_idx, column=2).value == item_data[1]):ws.delete_rows(row_idx)found = Truebreakif found:wb.save(FILE_PATH)self.load_records()  # 静默刷新else:messagebox.showwarning("错误", "未找到对应记录,可能已被删除")except PermissionError:messagebox.showerror("错误", "文件被占用,请关闭Excel后重试")except Exception as e:messagebox.showerror("错误", f"删除失败:{str(e)}")if __name__ == "__main__":init_excel()root = tk.Tk()app = RecordApp(root)root.mainloop()

关键字:杭州市建设网_腾讯科技微信小程序_合肥网络关键词排名_软文代发布

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: