Python TypeError:QByteArray中需要长度为1的字节或ASCII字符串?

Python TypeError:QByteArray中需要长度为1的字节或ASCII字符串?,python,pyqt5,Python,Pyqt5,我希望这能奏效。但事实并非如此。我做错了什么 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

我希望这能奏效。但事实并非如此。我做错了什么

    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
b'foobar'
6.
回溯(最近一次呼叫最后一次):
文件“pyqt_wtf_reach.py”,第9行,在
arr=QByteArray(len(b),b)
TypeError:需要长度为1的字节或ASCII字符串

这难道不管用吗?

有没有理由需要一个
QByteArray
?我这样问是因为有人说“如果Qt需要QByteArray,那么PyQt5也会接受一个字节”,所以似乎在很多情况下,实际上不需要将
bytes
转换为
QByteArray
。一定要不时查看文档P初始化函数的形式为
QByteArray(len,byte)
这将创建一个
QByteArray
len
字节长,填充
byte
。在您的情况下,只需执行
arr=QByteArray(b)
。即可解决问题。事实上,医生说@ByteArray(len,byte)。这让我相信(len(b),b)是正确的参数。似乎,人们必须经常查看文档,才能错过正确的内容;)