【问题标题】:Spell checking in PyQtWebEnginePyQtWebEngine 中的拼写检查
【发布时间】:2020-09-11 05:40:51
【问题描述】:

我正在编写一个主要使用 python 的程序,但一些交互功能是通过一个与烧瓶对话的网络应用程序完成的。将 web 应用程序放在 python 程序中会很好,所以我正在考虑使用 PyQtWebEngine。

除了我无法进行拼写检查外,它的效果出奇地好。我跑了

self.page().profile().setSpellCheckEnabled(True)
self.page().profile().setSpellCheckLanguages({"en-GB"})

在我的QWebEngineView 子类中,我检查了isSpellCheckEnabled() 是否为真。

我想知道它是否找不到语言。如果找不到字典,我会期望没有检测到 qWarning。正如non-python example 所建议的那样。

我有一个从 Chromium hunspell git 复制的 en-GB.bdic。我试过把文件放在:

<directory_my_py_file_is_in>/qtwebengine_dictionaries/en-GB.bdic

当我跑步时

app = QApplication(sys.argv)
print(app.applicationDirPath())

结果是

/usr/bin

所以我尝试了

/usr/bin/qtwebengine_dictionaries/en-GB.bdic

这不行,因为当程序安装 pip 时我无法编辑此位置,但值得一试。

.bdic 文件在任何一个地方我都看不到任何拼写检查功能。

有人在 PyQtWebEngine 中进行拼写检查吗?我无法在文档中找到很多东西。

【问题讨论】:

  • 你的操作系统是什么,你是如何安装 PyQtWebEngine 的?
  • 是的,PyQtWebEngine 是使用 pip 安装的。网络引擎工作正常,只是拼写检查器不行。操作系统是 Kubuntu 20.04

标签: python pyqt pyqt5 qtwebengine


【解决方案1】:

假设.bdic有效,那么我通过环境变量QTWEBENGINE_DICTIONARIES_PATH建立了字典的路径,例如我将官方示例翻译成python,结构如下:

├── data
│   ├── icon.svg
│   ├── index.html
│   ├── spellchecker.qrc
│   └── style.css
├── dict
│   ├── de
│   │   ├── de-DE.aff
│   │   ├── de-DE.dic
│   │   └── README.txt
│   └── en
│       ├── en-US.aff
│       ├── en-US.dic
│       └── README.txt
├── main.py
├── spellchecker_rc.py
├── qtwebengine_dictionaries
│   ├── de-DE.bdic
│   └── en-US.bdic
└── README.md

ma​​in.py

# ...
CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))
os.environ["QTWEBENGINE_DICTIONARIES_PATH"] = os.path.join(
    CURRENT_DIR, "qtwebengine_dictionaries"
)
# ...

注意:为了获得 bdic,我使用了 qwebengine_convert_dict 工具执行:

qwebengine_convert_dict dict/en/en-US.dic qtwebengine_dictionaries/en-US.bdic
qwebengine_convert_dict dict/de/de-DE.dic qtwebengine_dictionaries/de-DE.bdic

完整代码为here

【讨论】:

  • 您的示例存储库非常棒。在我查看您的代码并看到我在转换为 PyQT5 时犯的其他一些错误之后,环境变量起到了作用。最重要的是self.page().profile().setSpellCheckLanguages({"en-GB"}) 应该是 self.page().profile().setSpellCheckLanguages(("en-GB",))`
猜你喜欢
  • 2015-10-17
  • 2011-02-12
  • 2010-12-28
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2010-12-01
  • 2011-01-05
相关资源
最近更新 更多