当前位置: 首页 > news >正文

建设项目网站备案申请表青岛找网站建设公司哪家好

建设项目网站备案申请表,青岛找网站建设公司哪家好,国外服务器 网站进行经营性活动,网站设计服务Python Tkinter pyttsx3实现的桌面版英语学习工具 在多行文本框输入英文句子#xff0c;双击其中的英文单词#xff0c;给出英文读音和中文含义和音标。 本程序查询本地词典数据。通过菜单栏文件-打开词典编辑器进入编辑界面。 词典数据存储…Python Tkinter pyttsx3实现的桌面版英语学习工具 在多行文本框输入英文句子双击其中的英文单词给出英文读音和中文含义和音标。 本程序查询本地词典数据。通过菜单栏文件-打开词典编辑器进入编辑界面。 词典数据存储在独立的dictionary.json文件中这个文件需要和程序文件在同一文件夹中否则将自动建立一个。 编辑器实现了完整的CRUD创建、读取、更新、删除功能 添加单词直接填写所有字段后点击添加单词 编辑单词从列表选择单词 - 修改字段 - 点击保存修改 删除单词从列表选择单词 - 点击删除选中 pyttsx3 是一个文本到语音Text-to-Speech, TTS转换库它允许你在 Python 程序中将文本转换为语音输出。它是第三方库需要安装使用。 在cmd中使用 Python 包安装命令安装pip install pyttsx3 若安装了多个python版本X.Y代表Python版本多余的部分舍弃如3.8.1取3.83.10.5取3.10即只取第二个点前的部分。仅安装了一个python版本不需要。pip命令默认会连接在国外的python官方服务器下载速度可能比较慢使用镜像网址可以加快速度-i 镜像网址 py -3.12 -m pip install 第三方库名 -i https://pypi.tuna.tsinghua.edu.cn/simple py -3.12 -m pip install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple 运行效果 源码如下 import tkinter as tk from tkinter import ttk, messagebox, simpledialog import json import os import pyttsx3class DictionaryEditor:def __init__(self, master, dictionary, save_callback):self.master masterself.dictionary dictionaryself.save_callback save_callbackself.selected_word Nonemaster.title(词典编辑器)master.geometry(600x400)# 创建界面组件self.create_widgets()self.update_word_list()def create_widgets(self):# 单词列表框架list_frame ttk.Frame(self.master)list_frame.pack(sidetk.LEFT, padx10, pady10, filltk.BOTH, expandTrue)self.word_list tk.Listbox(list_frame, selectmodetk.SINGLE)self.word_list.pack(filltk.BOTH, expandTrue)self.word_list.bind(ListboxSelect, self.on_word_select)# 控制按钮框架btn_frame ttk.Frame(list_frame)btn_frame.pack(pady5)ttk.Button(btn_frame, text刷新列表, commandself.update_word_list).pack(sidetk.LEFT, padx2)ttk.Button(btn_frame, text删除选中, commandself.delete_word).pack(sidetk.LEFT, padx2)# 编辑区框架edit_frame ttk.Frame(self.master)edit_frame.pack(sidetk.RIGHT, padx10, pady10, filltk.BOTH, expandTrue)# 输入字段ttk.Label(edit_frame, text单词).grid(row0, column0, stickytk.W)self.word_entry ttk.Entry(edit_frame)self.word_entry.grid(row0, column1, pady5, stickytk.EW)ttk.Label(edit_frame, text音标).grid(row1, column0, stickytk.W)self.phonetic_entry ttk.Entry(edit_frame)self.phonetic_entry.grid(row1, column1, pady5, stickytk.EW)ttk.Label(edit_frame, text翻译).grid(row2, column0, stickytk.W)self.translation_entry ttk.Entry(edit_frame)self.translation_entry.grid(row2, column1, pady5, stickytk.EW)# 操作按钮btn_frame ttk.Frame(edit_frame)btn_frame.grid(row3, column0, columnspan2, pady10)ttk.Button(btn_frame, text添加单词, commandself.add_word).pack(sidetk.LEFT, padx5)ttk.Button(btn_frame, text保存修改, commandself.save_changes).pack(sidetk.LEFT, padx5)def update_word_list(self):self.word_list.delete(0, tk.END)for word in sorted(self.dictionary.keys()):self.word_list.insert(tk.END, word)def on_word_select(self, event):selection self.word_list.curselection()if selection:self.selected_word self.word_list.get(selection[0])self.load_word_data()def load_word_data(self):data self.dictionary.get(self.selected_word, {})self.word_entry.delete(0, tk.END)self.phonetic_entry.delete(0, tk.END)self.translation_entry.delete(0, tk.END)self.word_entry.insert(0, self.selected_word)self.phonetic_entry.insert(0, data.get(phonetic, ))self.translation_entry.insert(0, data.get(translation, ))def validate_input(self):word self.word_entry.get().strip().lower()phonetic self.phonetic_entry.get().strip()translation self.translation_entry.get().strip()if not word:messagebox.showwarning(输入错误, 单词不能为空)return Falseif not translation:messagebox.showwarning(输入错误, 翻译不能为空)return Falsereturn Truedef add_word(self):if not self.validate_input():returnnew_word self.word_entry.get().strip().lower()if new_word in self.dictionary:messagebox.showwarning(添加失败, 该单词已存在)returnself.dictionary[new_word] {phonetic: self.phonetic_entry.get().strip(),translation: self.translation_entry.get().strip()}self.save_data()self.update_word_list()messagebox.showinfo(成功, 单词已添加)def save_changes(self):if not self.selected_word or not self.validate_input():returnnew_word self.word_entry.get().strip().lower()# 检查是否修改了单词if new_word ! self.selected_word:if new_word in self.dictionary:messagebox.showwarning(修改失败, 目标单词已存在)return# 删除旧条目并创建新条目del self.dictionary[self.selected_word]self.selected_word new_wordself.dictionary[new_word] {phonetic: self.phonetic_entry.get().strip(),translation: self.translation_entry.get().strip()}self.save_data()self.update_word_list()messagebox.showinfo(成功, 修改已保存)def delete_word(self):if not self.selected_word:returnif messagebox.askyesno(确认删除, f确定要删除 {self.selected_word} 吗):del self.dictionary[self.selected_word]self.save_data()self.selected_word Noneself.update_word_list()messagebox.showinfo(成功, 单词已删除)def save_data(self):self.save_callback()class EnglishLearningApp:def __init__(self, master):self.master mastermaster.title(英语学习助手)master.geometry(800x600)# 初始化语音引擎self.engine pyttsx3.init()self.engine.setProperty(rate, 150)# 创建菜单self.create_menu()# 加载词典数据self.dictionary_file dictionary.jsonself.dictionary self.load_dictionary()# 创建界面组件self.create_widgets()# 添加缺失的 load_dictionary 方法def load_dictionary(self):从JSON文件加载词典数据try:if not os.path.exists(self.dictionary_file):# 如果文件不存在创建默认词典default_data {hello: {translation: 你好, phonetic: /həˈloʊ/},world: {translation: 世界, phonetic: /wɜːrld/}}with open(self.dictionary_file, w, encodingutf-8) as f:json.dump(default_data, f, indent2, ensure_asciiFalse)return default_datawith open(self.dictionary_file, r, encodingutf-8) as f:data json.load(f)# 验证数据格式if not all([translation in v and phonetic in v for v in data.values()]):raise ValueError(词典文件格式不正确)return dataexcept Exception as e:messagebox.showerror(初始化错误, f无法加载词典{str(e)})self.master.destroy() # 关闭程序exit(1)def create_widgets(self):# 输入文本框self.text_input tk.Text(self.master,height10,wraptk.WORD,font(Arial, 12),borderwidth2,reliefgroove)self.text_input.pack(pady10, padx20, filltk.BOTH, expandTrue)self.text_input.bind(Double-Button-1, self.on_double_click)# 结果显示区域self.result_frame ttk.Frame(self.master)self.result_frame.pack(pady10, padx20, filltk.BOTH, expandTrue)self.result_label ttk.Label(self.result_frame,text双击单词出现查询结果,font(Arial, 12, bold))self.result_label.pack(anchortk.W)self.result_text tk.Text(self.result_frame,height6,wraptk.WORD,font(Arial, 12),bg#f0f8ff,borderwidth2,reliefgroove)self.result_text.pack(filltk.BOTH, expandTrue)# 发音按钮self.speak_button ttk.Button(self.master,text播放发音,commandself.speak_word)self.speak_button.pack(pady5)def on_double_click(self, event):try:# 获取选中的单词self.text_input.tag_remove(sel, 1.0, tk.END)self.text_input.tag_add(sel, current wordstart, current wordend)selected_word self.text_input.get(sel.first, sel.last).lower()if selected_word:# 查询词典result self.dictionary.get(selected_word)if result:self.show_result(selected_word, result)self.current_word selected_wordelse:self.result_text.delete(1.0, tk.END)self.result_text.insert(tk.END, f未找到 {selected_word} 的释义)except Exception as e:messagebox.showerror(错误, f发生错误{str(e)})def show_result(self, word, data):self.result_text.config(statetk.NORMAL)self.result_text.delete(1.0, tk.END)result_str (f单词{word}\n\nf音标{data[phonetic]}\n\nf中文释义{data[translation]})self.result_text.insert(tk.END, result_str)self.result_text.config(statetk.DISABLED)def speak_word(self):if hasattr(self, current_word):self.engine.say(self.current_word)self.engine.runAndWait() def create_menu(self):menubar tk.Menu(self.master)# 文件菜单file_menu tk.Menu(menubar, tearoff0)file_menu.add_command(label打开词典编辑器, commandself.open_editor)file_menu.add_separator()file_menu.add_command(label退出, commandself.master.destroy) menubar.add_cascade(label文件, menufile_menu)self.master.config(menumenubar)def open_editor(self):editor_window tk.Toplevel(self.master)DictionaryEditor(editor_window, self.dictionary, self.save_dictionary)def save_dictionary(self):try:with open(self.dictionary_file, w, encodingutf-8) as f:json.dump(self.dictionary, f, indent2, ensure_asciiFalse)except Exception as e:messagebox.showerror(保存失败, f无法保存词典文件{str(e)})if __name__ __main__:root tk.Tk()app EnglishLearningApp(root)root.mainloop()
http://www.hkea.cn/news/14527437/

相关文章:

  • 北京公司建站模板自己做一元购网站
  • 网站服务器地址怎么查询河东网站建设
  • 浏阳网站建设公司对门户网站建设情况的报告
  • 可以自己做漫画的网站域名换了网站需要备案么
  • 安徽住房和城乡建设厅新网站世纪佳缘网站模板
  • 设计师经常上的网站南昌网站建设信息
  • 学校的网站怎么做的好wordpress登录更改域名后
  • 营销网站制作信ls15227无锡网站建设推广服务
  • 网站建设 从用户角度开始有可以花钱让人做问券的网站吗
  • 商品分类批量导入wordpress信息流优化师工作总结
  • 自动成交型网站做图片网站
  • php网站广告管理系统1688加工厂接单
  • 南和邢台网站制作wordpress字菜单
  • 如何在iis下建设网站医疗设备响应式网站
  • 设计师用的素材网站有哪些做网站开发考什么研
  • 大型定制网站最贵建设多少钱WordPress图片直链插件
  • 沈阳网站建设三好街厦门大型网站设计公司
  • 通州专业网站制作台州建站网站模板
  • 免费网站如何注册重庆网站建设方案
  • 西安户县建设厅网站国外分销平台有哪些
  • 网站换源码如何保留以前的文章近期新闻热点事件简短
  • 备案不关闭网站优设网文案下载
  • 网站建设吸引人的话语苏州网站开发公司济南兴田德润厉害吗
  • 给个高质量的网站搜狗推广手机客户端
  • 无锡信息网站建设北京赛车手机网站建设
  • 重庆网站建设报价wordpress 数据 清理
  • 网站营销单页怎么设计方案上海阿里巴巴网站建设
  • seo整站优化更能准确获得客户珠宝购物网站的建设
  • app开发网站建设培训班项目招商网站大全
  • 网站制作首页那种漂亮的网站怎么做的