外贸建站wordpress,长春免费网站建站模板,自己做外贸自己做网站,网络推广费计入什么科目生活小窍门查询小程序 下面是一个基于Python的生活小窍门查询小程序#xff0c;专为中老年人设计#xff0c;具有简洁易用的界面和实用的功能。 import json
import os
import tkinter as tk
from tkinter import ttk, messagebox, simpledialog
from datetime import da…生活小窍门查询小程序下面是一个基于Python的生活小窍门查询小程序专为中老年人设计具有简洁易用的界面和实用的功能。import jsonimport osimport tkinter as tkfrom tkinter import ttk, messagebox, simpledialogfrom datetime import datetimeclass LifeHacksApp:def __init__(self, root):self.root rootself.root.title(生活小窍门查询系统)self.root.geometry(800x600)self.root.configure(bg#f0f8ff)# 创建数据目录if not os.path.exists(data):os.makedirs(data)# 加载数据self.tricks_data self.load_data(data/tricks.json)self.favorites self.load_data(data/favorites.json) or []self.history self.load_data(data/history.json) or []# 创建UIself.create_widgets()# 显示欢迎信息self.show_welcome()def load_data(self, filename):try:if os.path.exists(filename):with open(filename, r, encodingutf-8) as f:return json.load(f)except:passreturn Nonedef save_data(self, data, filename):with open(filename, w, encodingutf-8) as f:json.dump(data, f, ensure_asciiFalse, indent2)def create_widgets(self):# 顶部标题header tk.Frame(self.root, bg#4682b4, height80)header.pack(fillx, padx10, pady10)title_label tk.Label(header, text生活小窍门查询系统, font(微软雅黑, 24, bold),fgwhite, bg#4682b4)title_label.pack(pady20)# 主内容区域main_frame tk.Frame(self.root, bg#f0f8ff)main_frame.pack(fillboth, expandTrue, padx20, pady10)# 左侧分类导航left_frame tk.Frame(main_frame, bg#e6f2ff, bd2, reliefgroove)left_frame.pack(sideleft, filly, padx(0, 10), pady10)categories [全部技巧, 清洁妙招, 收纳整理, 养生保健, 厨房窍门, 衣物护理, 健康饮食]for cat in categories:btn tk.Button(left_frame, textcat, width15, commandlambda ccat: self.filter_by_category(c),bg#87cefa, fg#333, font(微软雅黑, 11), reliefflat)btn.pack(pady5, padx10, ipadx5, ipady5)# 右侧功能区right_frame tk.Frame(main_frame, bg#ffffff, bd2, reliefgroove)right_frame.pack(sideright, fillboth, expandTrue, pady10)# 搜索框search_frame tk.Frame(right_frame, bg#ffffff)search_frame.pack(fillx, padx10, pady10)self.search_var tk.StringVar()search_entry tk.Entry(search_frame, textvariableself.search_var, font(微软雅黑, 12),width40, reliefsolid, borderwidth1)search_entry.pack(sideleft, padx(0, 10))search_entry.bind(Return, lambda event: self.search_tricks())search_btn tk.Button(search_frame, text搜索, commandself.search_tricks,bg#5f9ea0, fgwhite, font(微软雅黑, 11))search_btn.pack(sideleft)# 结果显示区域result_frame tk.Frame(right_frame, bg#ffffff)result_frame.pack(fillboth, expandTrue, padx10, pady(0, 10))self.result_tree ttk.Treeview(result_frame, columns(category, date), showheadings)self.result_tree.heading(#0, text技巧名称, anchorw)self.result_tree.heading(category, text类别)self.result_tree.heading(date, text添加时间)self.result_tree.column(#0, width300)self.result_tree.column(category, width100)self.result_tree.column(date, width150)vsb ttk.Scrollbar(result_frame, orientvertical, commandself.result_tree.yview)hsb ttk.Scrollbar(result_frame, orienthorizontal, commandself.result_tree.xview)self.result_tree.configure(yscrollcommandvsb.set, xscrollcommandhsb.set)self.result_tree.grid(row0, column0, stickynsew)vsb.grid(row0, column1, stickyns)hsb.grid(row1, column0, stickyew)result_frame.grid_columnconfigure(0, weight1)result_frame.grid_rowconfigure(0, weight1)# 绑定选择事件self.result_tree.bind(TreeviewSelect, self.show_trick_detail)# 底部按钮区button_frame tk.Frame(self.root, bg#f0f8ff)button_frame.pack(fillx, padx20, pady10)buttons [(收藏技巧, self.add_to_favorites, #ffa07a),(查看收藏, self.view_favorites, #20b2aa),(使用记录, self.view_history, #9370db),(添加新技巧, self.add_new_trick, #3cb371),(退出, self.exit_app, #cd5c5c)]for text, command, color in buttons:btn tk.Button(button_frame, texttext, commandcommand,bgcolor, fgwhite, font(微软雅黑, 11), width12)btn.pack(sideleft, padx10, pady5)def show_welcome(self):welcome_msg (欢迎使用生活小窍门查询系统\n\n本系统收录了各类实用生活技巧包括清洁、收纳、养生等。\n您可以通过左侧分类浏览或使用搜索功能查找特定技巧。\n\n提示选中技巧后可查看详情并可以收藏常用技巧。)messagebox.showinfo(欢迎使用, welcome_msg)def filter_by_category(self, category):self.result_tree.delete(*self.result_tree.get_children())if category 全部技巧:tricks self.tricks_dataelse:tricks [t for t in self.tricks_data if t[category] category]for trick in tricks:self.result_tree.insert(, end, texttrick[title],values(trick[category], trick[date]),tags(str(trick[id]),))def search_tricks(self):keyword self.search_var.get().strip().lower()if not keyword:messagebox.showinfo(提示, 请输入搜索关键词)returnself.result_tree.delete(*self.result_tree.get_children())results []for trick in self.tricks_data:if (keyword in trick[title].lower() orkeyword in trick[content].lower() orany(keyword in kw.lower() for kw in trick[keywords])):results.append(trick)if not results:messagebox.showinfo(搜索结果, f没有找到包含 {keyword} 的技巧)returnfor trick in results:self.result_tree.insert(, end, texttrick[title],values(trick[category], trick[date]),tags(str(trick[id]),))# 添加到历史记录self.add_to_history(f搜索: {keyword}, len(results))def show_trick_detail(self, event):selected self.result_tree.selection()if not selected:returnitem self.result_tree.item(selected[0])trick_id int(item[tags][0])trick next((t for t in self.tricks_data if t[id] trick_id), None)if not trick:returndetail_win tk.Toplevel(self.root)detail_win.title(trick[title])detail_win.geometry(500x400)detail_win.configure(bg#f0f8ff)# 标题title_label tk.Label(detail_win, texttrick[title], font(微软雅黑, 16, bold),bg#f0f8ff, fg#2f4f4f)title_label.pack(pady(15, 5), padx20, anchorw)# 类别标签cat_label tk.Label(detail_win, textf类别: {trick[category]},font(微软雅黑, 11), bg#f0f8ff, fg#4682b4)cat_label.pack(padx20, anchorw)# 日期标签date_label tk.Label(detail_win, textf添加时间: {trick[date]},font(微软雅黑, 10), bg#f0f8ff, fg#696969)date_label.pack(padx20, anchorw)# 分隔线ttk.Separator(detail_win, orienthorizontal).pack(fillx, padx20, pady10)# 内容content_frame tk.Frame(detail_win, bg#ffffff, bd1, reliefsunken)content_frame.pack(fillboth, expandTrue, padx20, pady(0, 15))content_text tk.Text(content_frame, wrapword, font(微软雅黑, 11),padx10, pady10, bg#ffffff, fg#333333)content_text.insert(1.0, trick[content])content_text.config(statedisabled)content_text.pack(fillboth, expandTrue)# 关键词标签keywords , .join(trick[keywords])kw_label tk.Label(detail_win, textf关键词: {keywords},font(微软雅黑, 10), bg#f0f8ff, fg#8b4513)kw_label.pack(padx20, anchorw)# 添加到历史记录self.add_to_history(f查看: {trick[title]})def add_to_favorites(self):selected self.result_tree.selection()if not selected:messagebox.showinfo(提示, 请先选择一个技巧)returnitem self.result_tree.item(selected[0])trick_id int(item[tags][0])if trick_id in self.favorites:messagebox.showinfo(提示, 该技巧已在收藏夹中)returnself.favorites.append(trick_id)self.save_data(self.favorites, data/favorites.json)messagebox.showinfo(成功, 已添加到收藏夹)def view_favorites(self):if not self.favorites:messagebox.showinfo(收藏夹, 收藏夹为空)returnfav_win tk.Toplevel(self.root)fav_win.title(我的收藏)fav_win.geometry(500x400)fav_win.configure(bg#f0f8ff)tree ttk.Treeview(fav_win, columns(category, date), showheadings)tree.heading(#0, text技巧名称, anchorw)tree.heading(category, text类别)tree.heading(date, text添加时间)tree.column(#0, width250)tree.column(category, width100)tree.column(date, width150)for fav_id in self.favorites:trick next((t for t in self.tricks_data if t[id] fav_id), None)if trick:tree.insert(, end, texttrick[title],values(trick[category], trick[date]),tags(str(trick[id]),))tree.pack(fillboth, expandTrue, padx10, pady10)tree.bind(Double-1, lambda e: self.show_from_favorites(tree))def show_from_favorites(self, tree):selected tree.selection()if not selected:returnitem tree.item(selected[0])trick_id int(item[tags][0])trick next((t for t in self.tricks_data if t[id] trick_id), None)if trick:detail_win tk.Toplevel(self.root)detail_win.title(trick[title])detail_win.geometry(500x400)detail_win.configure(bg#f0f8ff)# 显示技巧详情与show_trick_detail类似# 为节省空间这里省略具体实现messagebox.showinfo(trick[title], f类别: {trick[category]}\n\n{trick[content]})def view_history(self):if not self.history:messagebox.showinfo(使用记录, 暂无使用记录)returnhist_win tk.Toplevel(self.root)hist_win.title(使用记录)hist_win.geometry(500x300)hist_win.configure(bg#f0f8ff)text tk.Text(hist_win, wrapword, font(微软雅黑, 11), padx10, pady10)text.pack(fillboth, expandTrue, padx10, pady10)for entry in self.history[-20:]: # 显示最近20条记录text.insert(end, f{entry[time]} - {entry[action]}\n)text.config(statedisabled)def add_to_history(self, action, countNone):timestamp datetime.now().strftime(%Y-%m-%d %H:%M:%S)entry {time: timestamp, action: action}if count is not None:entry[action] f (找到{count}条结果)self.history.append(entry)self.save_data(self.history, data/history.json)def add_new_trick(self):add_win tk.Toplevel(self.root)add_win.title(添加新技巧)add_win.geometry(500x500)add_win.configure(bg#f0f8ff)# 表单字段fields [(标题, title),(类别, category),(内容, content),(关键词(逗号分隔), keywords)]entries {}for i, (label, key) in enumerate(fields):frame tk.Frame(add_win, bg#f0f8ff)frame.pack(fillx, padx20, pady5)lbl tk.Label(frame, textlabel:, width15, anchore,bg#f0f8ff, font(微软雅黑, 11))lbl.pack(sideleft)if key content:entry tk.Text(frame, height6, font(微软雅黑, 11))elif key keywords:entry tk.Entry(frame, font(微软雅黑, 11))else:entry tk.Entry(frame, font(微软雅黑, 11))entry.pack(sideleft, fillx, expandTrue)entries[key] entry# 提交按钮submit_btn tk.Button(add_win, text添加技巧,commandlambda: self.submit_new_trick(entries, add_win),bg#3cb371, fgwhite, font(微软雅黑, 11))submit_btn.pack(pady15)def submit_new_trick(self, entries, window):new_trick {id: max([t[id] for t in self.tricks_data], default0) 1,title: entries[title].get().strip(),category: entries[category].get().strip(),content: entries[content].get(1.0, end).strip(),keywords: [k.strip() for k in entries[keywords].get().split(,)],date: datetime.now().strftime(%Y-%m-%d)}if not new_trick[title] or not new_trick[content]:messagebox.showerror(错误, 标题和内容不能为空)returnself.tricks_data.append(new_trick)self.save_data(self.tricks_data, data/tricks.json)messagebox.showinfo(成功, 新技巧已添加)window.destroy()def exit_app(self):if messagebox.askyesno(退出, 确定要退出程序吗):self.root.destroy()def initialize_sample_data():sample_data [{id: 1,title: 去除水壶水垢,category: 清洁妙招,content: 将白醋倒入水壶中加水至半满煮沸后静置30分钟然后用清水冲洗干净。顽固水垢可重复此过程。,keywords: [水垢, 水壶, 清洁, 白醋],date: 2023-05-10},{id: 2,title: 衣物折叠收纳法,category: 收纳整理,content: 1. T恤: 背面朝上两侧向中间折叠下摆向上折叠至领口。\n2. 裤子: 平铺后对折再对折。\n3. 袜子: 卷成球状节省空间。\n使用收纳盒分类存放贴上标签便于查找。,keywords: [衣物, 折叠, 收纳, 整理],date: 2023-05-12},{id: 3,title: 缓解眼部疲劳,category: 养生保健,content: 每工作45分钟远眺20秒放松眼睛。用温热的湿毛巾敷眼5分钟。多吃胡萝卜、蓝莓等护眼食物。保证每天7-8小时睡眠。,keywords: [眼睛, 疲劳, 保健, 休息],date: 2023-05-15},{id: 4,title: 快速解冻肉类,category: 厨房窍门,content: 将冷冻肉放入密封袋中浸泡在冷水中每30分钟换一次水。比室温解冻快3倍且更安全卫生。切勿用热水解冻,keywords: [解冻, 肉类, 冷冻, 厨房],date: 2023-05-18},{id: 5,title: 去除衣服油渍,category: 衣物护理,content: 立即撒上面粉或小苏打吸附油脂静置15分钟后刷掉。再用洗洁精涂抹污渍处正常洗涤即可。陈旧油渍可用汽油轻擦注意通风。,keywords: [油渍, 衣服, 清洁, 去污],date: 2023-05-20},{id: 6,title: 自制健康早餐粥,category: 健康饮食,content: 材料: 燕麦片50g、小米30g、枸杞10g、红枣5颗、水800ml。做法: 所有材料洗净入锅大火煮开后转小火煮25分钟。可加少量蜂蜜调味。富含膳食纤维养胃又营养。,keywords: [早餐, 粥, 健康, 食谱],date: 2023-05-22}]if not os.path.exists(data/tricks.json):with open(data/tricks.json, w, encodingutf-8) as f:json.dump(sample_data, f, ensure_asciiFalse, indent2)if __name__ __main__:# 初始化示例数据initialize_sample_data()# 启动应用root tk.Tk()app LifeHacksApp(root)root.mainloop()程序功能说明这个生活小窍门查询小程序具有以下核心功能1. 分类浏览提供清洁妙招、收纳整理、养生保健等分类2. 关键词搜索支持按标题、内容和关键词搜索技巧3. 收藏功能可收藏常用技巧方便后续查看4. 使用记录自动记录用户查看和搜索的历史5. 添加新技巧用户可以添加新的生活小窍门6. 离线使用所有数据存储在本地文件中适用场景特别为中老年人设计解决日常生活中的问题- 清洁类去除水垢、油渍清洁等- 收纳类衣物折叠收纳方法- 养生类缓解眼部疲劳、健康饮食建议- 厨房类快速解冻肉类、自制健康早餐使用说明1. 首次运行会自动创建示例数据2. 通过左侧分类导航浏览不同类别的技巧3. 使用顶部搜索框查找特定技巧4. 选中技巧后点击收藏技巧将其加入收藏夹5. 点击查看收藏管理收藏的技巧6. 点击添加新技巧分享自己的生活经验技术特点- 使用Tkinter创建图形用户界面- 数据存储在JSON文件中支持离线使用- 简洁明了的界面设计适合中老年人使用- 响应式布局操作简单直观要运行此程序只需安装Python建议3.6版本并运行脚本即可。所有依赖都是Python标准库的一部分。我是编程小白请大家多多指教谢谢