|
下面是一个使用 PySide6 创建的简单查词词典程序,可以读取 mdx 文件和配套的 mdd 资源文件:
- import sys
- from PySide6.QtWidgets import (QApplication, QMainWindow, QWidget,
- QVBoxLayout, QHBoxLayout, QLineEdit,
- QPushButton, QTextBrowser)
- from PySide6.QtCore import Qt
- from readmdict import MDict
- import os
- class DictionaryApp(QMainWindow):
- def __init__(self):
- super().__init__()
- self.setWindowTitle("简单词典")
- self.setGeometry(100, 100, 800, 600)
-
- # 加载词典文件
- base_path = "." # 假设词典文件在当前目录
- mdx_file = "oaldpe.mdx"
- mdd_files = ["oaldpe.mdd", "oaldpe.1.mdd", "oaldpe.2.mdd", "oaldpe.3.mdd"]
-
- try:
- self.mdict = MDict(os.path.join(base_path, mdx_file))
- self.mdd_dicts = [MDict(os.path.join(base_path, mdd)) for mdd in mdd_files
- if os.path.exists(os.path.join(base_path, mdd))]
- except Exception as e:
- print(f"加载词典文件出错: {e}")
- self.mdict = None
- self.mdd_dicts = []
-
- self.init_ui()
-
- def init_ui(self):
- central_widget = QWidget()
- self.setCentralWidget(central_widget)
-
- layout = QVBoxLayout(central_widget)
-
- # 搜索栏
- search_layout = QHBoxLayout()
- self.search_input = QLineEdit()
- self.search_input.setPlaceholderText("输入要查询的单词")
- self.search_input.returnPressed.connect(self.search_word)
-
- search_button = QPushButton("搜索")
- search_button.clicked.connect(self.search_word)
-
- search_layout.addWidget(self.search_input)
- search_layout.addWidget(search_button)
-
- # 结果显示区域
- self.result_display = QTextBrowser()
- self.result_display.setOpenExternalLinks(True)
-
- layout.addLayout(search_layout)
- layout.addWidget(self.result_display)
-
- def search_word(self):
- if not self.mdict:
- self.result_display.setHtml("<h3>词典文件加载失败</h3>")
- return
-
- word = self.search_input.text().strip()
- if not word:
- return
-
- try:
- # 查询单词
- result = self.mdict.lookup(word)
- if result:
- # 获取HTML内容
- html_content = result[0].decode('utf-8', errors='ignore')
- self.result_display.setHtml(html_content)
- else:
- self.result_display.setHtml(f"<h3>未找到单词: {word}</h3>")
- except Exception as e:
- self.result_display.setHtml(f"<h3>查询出错: {str(e)}</h3>")
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- window = DictionaryApp()
- window.show()
- sys.exit(app.exec())
复制代码
使用前需要安装以下依赖:
安装必要的库:
- pip install PySide6 readmdict
复制代码
使用说明:
1. 确保 oaldpe.mdx 和配套的 mdd 文件在同一目录下
2. 运行程序后,在输入框中输入要查询的单词
3. 按回车或点击搜索按钮查看结果
注意事项:
1. 这个示例使用了 readmdict 库来读取 mdx 文件
2. 程序会尝试加载所有存在的 mdd 资源文件
3. 显示的内容是原始的 HTML 格式,可能包含样式和图片引用
4. 如果查询的单词不存在,会显示提示信息
扩展功能建议:
1. 添加历史记录功能
2. 实现单词收藏功能
3. 添加发音功能(需要处理音频资源)
4. 改进界面样式和用户体验
5. 添加模糊查询和自动补全功能
这个基础版本应该能够满足基本的查词需求。如果需要更复杂的功能,可以在此基础上进行扩展。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|