Как использовать метод ввода с PySide2 - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь заставить QLineEdit принять ввод от uim модуля метода ввода.

Я работаю в Manjaro Linux, и uim работает без проблем для других приложений, которые я использую.

PySide2 устанавливается pip в виртуальной среде.

Если я запускаю следующий код, я могу помещать только английские символы в виджет QLineEdit.

from PySide2.QtWidgets import QLineEdit, QApplication
from PySide2.QtCore import Qt

app = QApplication([])
widget = QLineEdit()
widget.setAttribute(Qt.WA_InputMethodEnabled)
widget.show()
app.exec_()

Итак, я проверил путь плагинов для PySide2, запустив следующий скрипт:

from PySide2.QtCore import QLibraryInfo
print(QLibraryInfo.location(QLibraryInfo.PluginsPath))

, который печатает: ${venv}/lib/python3.7/site-packages/PySide2/Qt/plugins

Затем я сравнил системный каталог плагинов Qt и тот, что внутривиртуальная среда:

$ ls -1 /usr/lib/qt/plugins/platforminputcontexts/
libcomposeplatforminputcontextplugin.so
libibusplatforminputcontextplugin.so
libqtvirtualkeyboardplugin.so
libuimplatforminputcontextplugin.so
$ ls -1 ${venv}/lib/python3.7/site-packages/PySide2/Qt/plugins/platforminputcontexts/
libcomposeplatforminputcontextplugin.so
libibusplatforminputcontextplugin.so
libqtvirtualkeyboardplugin.so

Вы видите, что в пути PySide2 plugins отсутствует файл libuimplatforminputcontextplugin.so.Я мог бы использовать uim, когда скопировал отсутствующий файл библиотеки в путь плагинов PySide2, но при этом:

  • не обеспечивал бы работу других методов ввода (например, ibus)
  • усложняет упаковку для других платформ

Каким было бы решение использовать методы ввода, такие как uim с установкой в ​​пипсах PySide2?

...