鱼C论坛

 找回密码
 立即注册
查看: 1689|回复: 10

关于PySide6-uic.exe转换后py文件中文显示问题

[复制链接]
发表于 2023-6-15 21:18:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hynet1024 于 2023-6-15 22:04 编辑

请教:我使在PyCharm的外部工具中设置好了PySide6-uic.exe工具,并成功将.ui文件转换为了.py文件,运行也正常,只是py文件中的中文标签、按钮文字显示例如:u"\u6b22\u8fce\u5149\u4e34\uff01"格式。

请问有什么办法让其显示本来的中文吗?

PS:使用PyQt6的Pyuic.exe转换后就是汉字,见图
QQ图片20230615211631.png
QQ图片20230615211715.png
QQ图片20230615220415.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-15 21:27:20 | 显示全部楼层
可以交出完整代码吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-15 21:41:06 | 显示全部楼层
Threebody1 发表于 2023-6-15 21:27
可以交出完整代码吗
  1. # -*- coding: utf-8 -*-

  2. ################################################################################
  3. ## Form generated from reading UI file 'hello.ui'
  4. ##
  5. ## Created by: Qt User Interface Compiler version 6.5.0
  6. ##
  7. ## WARNING! All changes made in this file will be lost when recompiling UI file!
  8. ################################################################################

  9. from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
  10.     QMetaObject, QObject, QPoint, QRect,
  11.     QSize, QTime, QUrl, Qt)
  12. from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
  13.     QFont, QFontDatabase, QGradient, QIcon,
  14.     QImage, QKeySequence, QLinearGradient, QPainter,
  15.     QPalette, QPixmap, QRadialGradient, QTransform)
  16. from PySide6.QtWidgets import (QApplication, QLabel, QPushButton, QSizePolicy,
  17.     QWidget)

  18. class Ui_Form(object):
  19.     def setupUi(self, Form):
  20.         if not Form.objectName():
  21.             Form.setObjectName(u"Form")
  22.         Form.resize(400, 300)
  23.         self.label = QLabel(Form)
  24.         self.label.setObjectName(u"label")
  25.         self.label.setGeometry(QRect(160, 130, 61, 31))
  26.         self.pushButton = QPushButton(Form)
  27.         self.pushButton.setObjectName(u"pushButton")
  28.         self.pushButton.setGeometry(QRect(100, 220, 75, 24))
  29.         self.pushButton_2 = QPushButton(Form)
  30.         self.pushButton_2.setObjectName(u"pushButton_2")
  31.         self.pushButton_2.setGeometry(QRect(210, 220, 75, 24))

  32.         self.retranslateUi(Form)

  33.         QMetaObject.connectSlotsByName(Form)
  34.     # setupUi

  35.     def retranslateUi(self, Form):
  36.         Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
  37.         self.label.setText(QCoreApplication.translate("Form", u"\u6b22\u8fce\u5149\u4e34\uff01", None))
  38.         self.pushButton.setText(QCoreApplication.translate("Form", u"\u8fdb\u5165", None))
  39.         self.pushButton_2.setText(QCoreApplication.translate("Form", u"\u9000\u51fa", None))
  40.     # retranslateUi

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-15 21:46:43 | 显示全部楼层


u字符串是py2的东西,你的py版本是?(cmd:py  --version
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-15 21:51:39 | 显示全部楼层
在代码中手动调用 QString.fromUtf8() 方法,将 Unicode 字符串转成中文:

  1. self.label.setText(QString.fromUtf8(u"\u6b22\u8fce\u5149\u4e34\uff01"))
复制代码

这个方法会将u"\u6b22\u8fce\u5149\u4e34\uff01" 转成 "欢迎光临!"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-15 21:55:32 | 显示全部楼层
不二如是 发表于 2023-6-15 21:51
在代码中手动调用 QString.fromUtf8() 方法,将 Unicode 字符串转成中文:

我的意思是想在转换的时候自动算成汉字,这样手动改......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-15 21:56:40 | 显示全部楼层
Threebody1 发表于 2023-6-15 21:46
u字符串是py2的东西,你的py版本是?(cmd:py  --version

3.11.4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-15 22:04:11 | 显示全部楼层
hynet1024 发表于 2023-6-15 21:55
我的意思是想在转换的时候自动算成汉字,这样手动改......

转换器的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-15 22:43:58 | 显示全部楼层
你可以将.py文件中的u"xxx"格式的字符串替换为正常的字符串,因为这是Python 3.x默认使用Unicode编码,而PYQT6在生成UI时自动添加了字符的解码声明。可以考虑通过以下两种方式来解决:

1.修改.ui文件
直接在 .ui 文件里面设置字符编码:在Qt Designer 的 File -> Form Properties 选项卡中,在 Encoding 设置中选择想要的字符编码(如 UTF-8),然后重新转换.py文件

2.在代码中手动解码
在转换后的.py文件中找到需要修改的字符串,使用 `.decode()` 或者 `.encode().decode() `对其进行解码,示例代码如下:

  1. label.setText(QCoreApplication.translate("Form", u"\u6b22\u8fce\u5149\u4e34\uff01", None))
复制代码

可修改为:

  1. label.setText("欢迎光临!".encode('raw_unicode_escape').decode())
复制代码


求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-15 22:57:14 | 显示全部楼层
sfqxx 发表于 2023-6-15 22:43
你可以将.py文件中的u"xxx"格式的字符串替换为正常的字符串,因为这是Python 3.x默认使用Unicode编码,而PY ...

谢谢回复,但是我的Qt Designer 的 File ->中没有 Form Properties 选项卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-10 17:04:17 | 显示全部楼层
楼主解决了没有,我也是这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 04:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表