linux下 pyqt 对 fcitx 的支持

获取 fcitx-qt5 源码 (fcitx-qt官网),编译源码,步骤如下:

cd file_path(为fcitx-qt5 解压后的文件夹路径)
mkdir build && cd build
cmake .. (报错 Could not find a package configuration file provided by "ECM" 则执行 sudo apt install extra-cmake-modules ,然后再次执行 cmake ..)
make
sudo make install

然后拷贝到qt目录下的 platforminputcontexts 目录

关于给当前环境下的pyqt安装fcitx支持的自动化脚本执行如下:

我的系统是 ubuntu的,脚本执行安装库的时候,使用了apt,如果没有apt,可以使用对应的工具。

import sys,os
import subprocess
try:
    import PyQt5
except ImportError:
    print('can\'t find pyqt5! exit')
    sys.exit(-1)

ppath = PyQt5.__path__
if isinstance(ppath, list) and len(ppath) > 0:
    ppath = ppath[0]
else:
    print('pyqt5 path error! ')
    sys.exit(-1)

p = subprocess.Popen(['apt','list'], stdout=subprocess.PIPE)

is_found = False

for tl in p.stdout.read().decode().split('\n'):
    if tl.split('/')[0] == 'extra-cmake-modules':
        is_found = True
if not is_found:
    print('需要安装 extra-cmake-modules,请手动执行:\n\tsudo apt install extra-cmake-modules')
    sys.exit(-1)

if not os.path.exists('fcitx-1t5'):
    os.system('git clone https://gitee.com/hocker/fcitx-qt5')

if not os.path.exists('fcitx-qt5/build'):
    os.system('mkdir fcitx-qt5/build')
ret = os.system('. ~/.bashrc && cd fcitx-qt5/build && cmake .. && make -j8')
# os.system('sudo make install')
ret |= os.system( 'cp fcitx-qt5/build/platforminputcontext/libfcitxplatforminputcontextplugin.so  ' + os.path.join(ppath, 'Qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so'))

if ret != 0:
    print('自动执行失败,需手动执行')
    print('手动执行:\n\tcd fcitx-qt5/build && cmake .. && make -j8 &&sudo make install ')
    print('执行成功后,然后执行:\n\t ' +'cp fcitx-qt5/build/platforminputcontext/libfcitxplatforminputcontextplugin.so  ' + os.path.join(ppath, 'Qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so'))

如果上面脚本报错,可能是pyqt用 pip进行安装 ,我看了下用conda安装是没有 Qt/plugins/platforminputcontexts 这个目录的,用pip安装就有 Qt/plugins/platforminputcontexts,具体原因目前没有看,估计是这个目录对 pyqt 是可选的。

pip install pyqt5

如果还有问题,可以留言讨论。


感谢 《Linux下关于Qt无法调用fcitx的中文输入》博客,在其帮助下完成问题的定位并解决了问题。

你可能感兴趣的:(快速脚本)