解决pyside6-uic生成py代码中文为unicode(乱码)的问题

前言

本来想用Java做客户端,后来发现很多算法还是Python有现成的比较方便。

所以最终选择了pyside6。但是用Designer(QT设计师)设计完后,生成的代码中文部分显示为unicode,也可以理解为乱码。

就像这样:self.pushButton.setText(QCoreApplication.translate("dialog", u"\u767b\u5f55", None))

虽然不影响最终展示,但作为强迫症的我,必须解决!!

下面是解决方法:

1. 下载安装ascii2uni

Mac用户可使用homebrew安装:brew install uni2ascii
(我是MacOS系统)

其他用户可去官网下载安装:https://billposer.org/Software/uni2ascii.html#downloads

安装完以后使用以下类似命令即可生成正常的中文显示:

/Library/Frameworks/Python.framework/Versions/3.8/bin/pyside6-uic LoginWindow.ui | ascii2uni -a U > ui_LoginWindow.py 
  1. /Library/Frameworks/Python.framework/Versions/3.8/bin/pyside6-uic 是你的uic地址
  2. LoginWindow.ui 是你设计UI文件的地址
  3. ui_LoginWindow.py 是py文件输出地址

以上三个是自定义的内容,其他为固定命令。
在这里插入图片描述

但是!这样每次都要输入命令多麻烦啊!下面是在PyCharm中的配置

2. PyCharm配置

我们可以在PyCharm中添加外部工具,以方便我们每次进行生成Python代码。

这里有个大坑,我先说一下吧。
本来在PyCharm中添加外部工具配置一下命令,应该就可以跟命令行执行的效果一样了。

程序:/Library/Frameworks/Python.framework/Versions/3.8/bin/pyside6-uic
实参:$FileName$ | ascii2uni -a U > UI_$FileNameWithoutExtension$.py
工作目录:$FileDir$
解决pyside6-uic生成py代码中文为unicode(乱码)的问题_第1张图片
但是!but!!!
我不知道PyCharm怎么回事,他最终执行的命令是:/Library/Frameworks/Python.framework/Versions/3.8/bin/pyside6-uic LoginWindow.ui "|" ascii2uni -a U > ui_LoginWindow.py

| 被 双引号包裹了。导致生产的代码还是中文乱码!!!!

(有知道怎么改PyCharm配置解决这个问题的朋友请留言谢谢!!)

由于我不知道PyCharm的什么原因,最终我只能通过shell脚本的方式来解决这个问题:

  1. 在某个你能找到的目录新建一个.sh文件

我懒省事直接在项目目录建了一个,大家不要学我。

解决pyside6-uic生成py代码中文为unicode(乱码)的问题_第2张图片
2. 脚本内容

#!/bin/bash

if [ $# -ne 3 ]; then
    echo "用法: $0  <输入UI文件> <输出PY文件>"
    exit 1
fi

pyside6_uic="$1"
input_ui="$2"
output_py="$3"

"$pyside6_uic" "$input_ui" | ascii2uni -a U > "$output_py"
  1. 更改刚刚创建的外部工具配置

程序:/Users/localhost/develop/PycharmProjects/sd-client-3/pyuic.sh
实参:/Library/Frameworks/Python.framework/Versions/3.8/bin/pyside6-uic $FileName$ $FileNameWithoutExtension$.py
工作目录:$FileDir$

这里的三个配置需要根据你的实际目录去更改,不要照着我的抄!
解决pyside6-uic生成py代码中文为unicode(乱码)的问题_第3张图片

3. 解决前后对比

解决前

解决pyside6-uic生成py代码中文为unicode(乱码)的问题_第4张图片

解决后:

解决pyside6-uic生成py代码中文为unicode(乱码)的问题_第5张图片

你可能感兴趣的:(Python,python,pyside6-uic,pyside6,pyside6中文乱码)