我目前正在开发一个小型个人项目,允许用户将列表项从PyQt4中的QListWidget拖到打开消息对话框的标签上。您将看到selected
同时生成两个实例中的标题和链接。我怎样才能访问各个元素?我的目标是在对话框标题中实现第一个元素(标题),它是about()方法的第二个参数,并在主对话框中显示bytearray(链接)的第二部分。
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
非常感谢任何帮助!
答案 0 :(得分: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