PyQtWebEngine 中的拼写检查

Spell checking in PyQtWebEngine

我正在编写一个主要在 python 中的程序,但一些交互功能是通过与 Flask 对话的 web-app 完成的。在 python 程序中包含 web-app 会很好,所以我正在考虑使用 PyQtWebEngine。

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

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

从我的 child class 中 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 中进行过拼写检查吗?我没能找到很多文档。

假设.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

main.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.