ubuntu Qt5或PyQt5 无法切换搜狗输入法

4 篇文章 0 订阅

问题

ubuntu 系统中, 搜狗输入法使用了 fcitx 输入法框架, 但无论是 Qt Creator 还是 PyQt5, 默认都不支持 fcitx, 在 QLineEdit 和 QTextEdit等控件的输入框中无法切换为搜狗输入法

解决

直接安装预编译的库

sudo apt install fcitx-frontend-qt5

安装完成后, 系统中多出一个动态库 libfcitxplatforminputcontextplugin.so

ls /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

将该库拷贝到 Qt5/PyQt5 安装目录中的特定位置就可以解决问题


Qt Creator

对于 Qt Creator, 假设 Qt 安装于 /opt 目录下

则该位置为 /opt/Qt/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/

sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /opt/Qt/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/

PyQt5

对于 PyQt5, 查看安装位置

pip3 show PyQt5
Name: PyQt5
Version: 5.15.2
Summary: Python bindings for the Qt cross platform application toolkit
Home-page: https://www.riverbankcomputing.com/software/pyqt/
Author: Riverbank Computing Limited
Author-email: info@riverbankcomputing.com
License: GPL v3
Location: /home/jianghuixin/.venv/Learn/lib/python3.8/site-packages
Requires: PyQt5-sip
Required-by:

具体位置为: “上述 Location 的位置/PyQt5/Qt/plugins/platforminputcontexts/”

拷贝动态库

cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /home/jianghuixin/.venv/Learn/lib/python3.8/site-packages/PyQt5/Qt/plugins/platforminputcontexts/

对于 Qt Creator 和 PyQt5, 该特定位置的末尾路径都是 Qt/plugins/platforminputcontexts/, 对于 PySide2 解决方法应该也是类似的

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 您可以使用QLineEdit类的setText()方法设置QLineEdit的初始值。例如: ```python from PyQt5.QtWidgets import QLineEdit, QApplication, QWidget, QVBoxLayout, QPushButton class App(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): input_box = QLineEdit() input_box.setText("初始值") button = QPushButton("获取输入框值") button.clicked.connect(lambda: print(input_box.text())) layout = QVBoxLayout() layout.addWidget(input_box) layout.addWidget(button) self.setLayout(layout) self.show() if __name__ == '__main__': app = QApplication([]) ex = App() app.exec_() ``` 在这个例子中,我们创建了一个QLineEdit对象,并使用setText()方法将其初始值设置为“初始值”。然后我们将其添加到了QVBoxLayout中,并将其与一个QPushButton一起添加到了QWidget中。最后我们展示了这个QWidget。 ### 回答2: 在Python中,使用pyqt5库设置QLineEdit的初始值可以通过setText()函数实现。假设你已经创建了一个QLineEdit对象,我们可以使用该函数设置初始值。 下面是一个例子: ```python from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout, QPushButton def set_default_value(): line_edit.setText("Hello, World!") # 设置QLineEdit的初始值为"Hello, World!" app = QApplication([]) window = QWidget() layout = QVBoxLayout() line_edit = QLineEdit() layout.addWidget(line_edit) button = QPushButton("Set Default Value") button.clicked.connect(set_default_value) layout.addWidget(button) window.setLayout(layout) window.show() app.exec_() ``` 在上述例子中,我们创建了一个QWidget窗口和一个QLineEdit对象。然后,将QLineEdit对象添加到窗口的布局中。通过点击按钮,调用set_default_value()函数,该函数使用setText()方法将QLineEdit的初始值设置为“Hello, World!”。 运行程序后,在QLineEdit中应该显示出“Hello, World!”这个初始值。 希望这个回答对你有帮助! ### 回答3: 在使用Python中的PyQt5库中的QLineEdit控件时,可以通过setPlaceholderText()方法为其设置初始值。该方法可以接收一个参数,用于设置占位文本。 示例代码如下: ```python from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout import sys class MyWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): layout = QVBoxLayout() line_edit = QLineEdit() line_edit.setPlaceholderText("请输入初始值") layout.addWidget(line_edit) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) win = MyWindow() win.show() sys.exit(app.exec_()) ``` 在上面的代码中,使用QLineEdit控件创建了一个简单的窗口,然后通过调用setPlaceholderText()方法设置了初始值为"请输入初始值"。可以根据需要自行修改初始值文本。 另外,还可以使用setText()方法来直接设置QLineEdit控件的初始值,例如: ```python line_edit.setText("初始值") ``` 通过调用setText()方法,可以将QLineEdit控件的初始值设置为"初始值"。与setPlaceholderText()方法不同的是,setText()方法会直接将文本显示在控件内,用户在获取焦点后文本会消失;而setPlaceholderText()方法则只是简单地占位,而不会直接显示文本。根据具体应用场景,选择合适的方法来设置QLineEdit控件的初始值。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值