我希望这能奏效。但事实并非如此。我做错什么了?
from PyQt5.QtCore import QByteArray
str = 'foobar'
b = bytes(str, 'UTF-8')
print (b)
print (len(b))
arr = QByteArray(len(b), b)
但我明白:
b'foobar'
6
Traceback (most recent call last):
File "pyqt_wtf_again.py", line 9, in <module>
arr = QByteArray(len(b), b)
TypeError: bytes or ASCII string of length 1 expected
这样不就行了吗?
发布于 2022-08-10 12:59:55
下面是来自QByteArray的C++ Qt文档构造函数
QByteArray(QByteArray &&other)
QByteArray(const QByteArray &other)
QByteArray(qsizetype size, char ch)
QByteArray(const char *data, qsizetype size = -1)
第三个是您正在使用的,但这需要一个字符,而不是字符串。如果您将代码更改为
from PyQt5.QtCore import QByteArray
str = 'f'
b = bytes(str, 'UTF-8')
print (b)
print (len(b))
arr = QByteArray(len(b), b)
它没有问题,因为f是一个单一的字符。PyQt只是C++ Qt的一个接口,所以我认为关于python的QByteArray文档只是缺少显示这个构造函数。
https://stackoverflow.com/questions/34889572
复制相似问题