gpt4 book ai didi

Python:如何使用 ListWidget Items 来存储和检索对象:简单

转载 作者:行者123 更新时间:2023-12-01 05:19:34 24 4
gpt4 key购买 nike

在使用 QListWidget 和其他“列表”小部件之后,我终于找到了一个似乎是存储和检索列表的 Item 类(QListWidgetItem)的简单解决方案。我向自己介绍的问题是我认为 QListWidgetItem 只能用于存储其标签名称(用于在 ListWidget 中显示的标签名称)这一事实。当 QListWidget 填充 QListWidgetItems 时,我必须声明一个字典,其中每个键都是该项目的标签名称,而一个值将等于该对象本身(这是危险的方法,因为两个或多个项目可能具有相同的名称,而字典只能有一个同名的 key )。然后,当单击某个项目时,我将捕获该列表项目标签(名称)并查看字典的键以查找相应的对象。如果我声明自己的继承自 QListWidgetItem 的自定义 myItem() 类,所有这些都可以轻松避免。现在,当单击列表项时,我可以直接从中获取对象,就像调用 .getTime() 方法一样。在 promise 在我的代码中使用此方法之前,如果我遗漏或误解了任何内容,请告诉我。

from PyQt4 import QtGui, QtCore
import sys, os


class myItem(QtGui.QListWidgetItem):
def __init__(self, name):
super(myItem, self).__init__()
self.name=name
def getTime(self):
import datetime
return datetime.datetime.now()

class Dialog_01(QtGui.QMainWindow):
def __init__(self):
super(QtGui.QMainWindow,self).__init__()

myQWidget = QtGui.QWidget()
myBoxLayout = QtGui.QVBoxLayout()
myQWidget.setLayout(myBoxLayout)
self.setCentralWidget(myQWidget)

self.listWidget = QtGui.QListWidget()

self.listWidget.currentItemChanged.connect(self.item_clicked)

for i in range(12):
name='Item '+str(i)
my_item=myItem(name)
my_item.setText('Item '+str(i))
self.listWidget.addItem(my_item)

myBoxLayout.addWidget(self.listWidget)

def item_clicked(self, arg=None):
print arg.text(), arg.getTime()


if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
dialog_1 = Dialog_01()
dialog_1.show()
dialog_1.resize(480,320)
sys.exit(app.exec_())

最佳答案

您可以通过QListWidgetItem.setData (self, role, value)设置QListWidgetItem的用户数据

您可以指定自己的角色,从而将特定数据直接添加到此小部件。

要检索数据,请使用 QListWidgetItem.data (self, role) 和正确的角色。

关于Python:如何使用 ListWidget Items 来存储和检索对象:简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22670214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com