拆分字节数组
我现在正在做一个小项目,这个项目允许用户把QListWidget里的列表项拖到一个标签上,然后会弹出一个消息对话框。你会看到selected
在这两种情况下都能产生标题和链接。我想知道怎么才能只获取单独的元素?我的目标是把第一个元素(标题)放在对话框的标题栏里,这个标题是about()方法的第二个参数,然后把字节数组的第二部分(链接)显示在主对话框里。
def dropEvent(self, event):
data = event.mimeData()
bstream = data.retrieveData("application/x-feed", QtCore.QVariant.ByteArray)
selected = pickle.loads(bstream.toByteArray())
event.accept()
QtGui.QMessageBox.about(self, str(selected),
""" %s """ % str(selected)
)
编辑
class base(object):
def __init__(self, name, link):
self.name = name
self.link = link
def __repr__(self):
return "%s\n%s" % (self.name, self.link)
错误:TypeError 'base' 不支持索引
到目前为止的背景阅读: http://srinikom.github.io/pyside-docs/PySide/QtCore/QMimeData.html https://docs.python.org/3.1/library/functions.html
任何帮助都非常感谢!
1 个回答
0
如果 pickle.loads
返回的是一个元组,那么你可以使用这个语法:
(title,link) = pickle.loads(bstream.toByteArray())
或者
selected = pickle.loads(bstream.toByteArray())
title = selected[0]
link = selected[1]
编辑
我最开始以为 pickle.loads
返回的是一个元组,但其实它返回的是一个 base
对象,这个对象有两个属性,所以你只需要访问这些属性就可以了(记住,Python里没有私有属性):
selected = pickle.loads(bstream.toByteArray())
title = selected.name
link = selected.link