pyqt4中文输入

在使用pyqt的时候,常常需要输入中文,比如在lineEdit控件中使用输入中文。但是直接输入中文,如下图

在读取该控件的时候

就会发生错误,错误提示如下:

    print self.lineEdit.text()
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

原因是编码类型不匹配

网上对这个问题的讲解很少,看了不少论坛后,终于找到解决的办法

self.result = unicode(self.lineEdit.text()).encode('utf-8')

将lineEdit的文本内容即QString文本通过修改问utf-8的方式来正确的读取文本中的中文。

以此记录

 

PyQt中,如果要显示中文并且中文字符的宽度超过了默认的宽度,可能会出现无法完全显示的情况。这是因为默认情况下,PyQt使用了西文字体,而中文字体的宽度通常要比西文字体的宽度要大,需要设置中文字体以解决这个问题。 可以使用以下代码来设置中文字体: ```python from PyQt5.QtGui import QFontDatabase, QFont # 获取系统中的中文字体,并设置为标准的中文字体 font_db = QFontDatabase() font_id = font_db.addApplicationFont('path/to/chinese/font.ttf') font_family = font_db.applicationFontFamilies(font_id)[0] font = QFont(font_family) ``` 在这个例子中,我们首先使用`QFontDatabase`类获取系统中的中文字体,并将其添加到应用程序中。然后,我们获取中文字体的家族名称,并将其用于创建一个新的字体对象。 接下来,将字体对象应用于需要显示中文的控件,例如`QLabel`、`QTextEdit`、`QLineEdit`等等。例如: ```python from PyQt5.QtWidgets import QApplication, QLabel from PyQt5.QtGui import QFontDatabase, QFont app = QApplication([]) # 获取系统中的中文字体,并设置为标准的中文字体 font_db = QFontDatabase() font_id = font_db.addApplicationFont('path/to/chinese/font.ttf') font_family = font_db.applicationFontFamilies(font_id)[0] font = QFont(font_family) # 创建标签 label = QLabel() label.setText("你好,世界!") label.setFont(font) label.show() app.exec_() ``` 在这个例子中,我们创建了一个标签,并将其文本设置为“你好,世界!”。然后,我们设置了中文字体,并将其应用于标签。最后,我们显示了标签。 这样就可以保证中文字符可以完全显示了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值