二十七、Ubuntu22.04 + Anaconda +PyQt5
1. 创建虚拟环境、安装 PyQt5
conda info --envs
conda create --name pyqt5 python=3.7
conda activate pyqt5
# 安装 pyqt5
pip install PyQt5 -i https://pypi.douban.com/simple
# 安装常用的工具包
pip install PyQt5-tools -i https://pypi.douban.com/simple
conda deactivate
conda remove --name pyqt5 --all
2. 测试是否安装完毕
3. 在 Pycharm 中配置 QtDesigner
首先,要知道在虚拟环境中下载的库,都在这个路径下
/home/yao/anaconda3/envs/pyqt5/lib/python3.7/site-packages
然后,刚刚安装的工具包中,就有 QtDesigner,路径如下
/home/yao/anaconda3/envs/pyqt5/lib/python3.7/site-packages/qt5_applications/Qt/bin/designer
QtDesigner 可以帮助我们设计界面,并保存为 ui 文件
打开 Pycharm 新建一个项目 myPyQt5
文件 → 设置 → 工具 → 外部工具 → 点击 + 号
名称:QtDesigner
程序:/home/yao/anaconda3/envs/pyqt5/lib/python3.7/site-packages/qt5_applications/Qt/bin/designer
工作目录:$ProjectFileDir$
工具 → 外部工具 → QtDesigner
如果能打开这个界面,说明配置成功了
4. 在 Pycharm 中配置 PyUIC
PyUIC 是一个代码转换工具,可以将 QtDesigner 输出的 ui 文件
转换为 py 文件
名称:PyUIC
程序:/home/yao/anaconda3/envs/pyqt5/bin/pyuic5
实参:$FileName$ -o $FileNameWithoutExtension$.py
工作目录:$ProjectFileDir$
可以先用 QtDesigner 创建一个界面,保存为 test.ui
这个 test.ui
文件中就定义了这些界面的样式
你在 Pycharm 中,选中 test.ui
→ 右键 → 外部工具 → PyUIC
就可以把这个 ui 文件
转换成对应的 py 文件
写点代码,调用它
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from test import Ui_Form # 导入转换出来的界面
class MyUi(QDialog, Ui_Form):
def __init__(self, parent=None):
super(MyUi, self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyUi()
myWin.show()
sys.exit(app.exec_())
5. 解决 QtDesigner 无法输入中文
原因:需要一个 fcitxt 输入法的动态库 libfcitxplatforminputcontextplugin.so
# 安装 fcitx-frontend-qt5
sudo apt-get install fcitx-frontend-qt5
# 查看安装库路径
dpkg -L fcitx-frontend-qt5
这个库在这个路径下
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
把它拷贝到你 PyQt 安装目录下的 plugins/platforminputcontexts
即可
但是要注意,因为我这里是用 Anaconda 创建出的虚拟环境中安装的 PyQt5 和 PyQt5-tools
所以需要到 site-packages/qt5_applications/Qt/plugins
下手动建立一个的 platforminputcontexts
# 移动目的地,并创建文件夹
cd /home/yao/anaconda3/envs/pyqt5/lib/python3.7/site-packages/qt5_applications/Qt/plugins
mkdir platforminputcontexts
# 拷贝
cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ./platforminputcontexts
# 修改权限
cd platforminputcontexts
sudo chmod 777 libfcitxplatforminputcontextplugin.so
实在解决不了的话,你就简单粗暴一点,直接在别的地方把中文写好,然后复制到 Qt Designer 里面也是一样的