如何在pyqt5 QlistWidget中选择当前项目

Posted

技术标签:

【中文标题】如何在pyqt5 QlistWidget中选择当前项目【英文标题】:How to select current items in pyqt5 QlistWidget 【发布时间】:2021-09-22 08:54:00 【问题描述】:

我正在使用 qt 设计器并从数据库中填充了一个 qlistwidget。我希望能够从列表中进行选择,目前只需将其打印出来。我正在使用 currentItem 方法,但它没有返回字符串。它只返回内存位置。我不明白如何让它正常工作。

        session_name_=str(self.listWidget.currentItem())

        addendant_=self.listWidget_2.currentRow()
        scheduled_=self.dateTimeEdit.dateTime()
        sched=scheduled_.toString("MM/dd/yyyy h:mm ap")
        
        print(session_name_)

返回 <PyQt5.QtWidgets.QListWidgetItem object at 0x7fe5050bccd0>

【问题讨论】:

【参考方案1】:

尝试使用:session_name = self.listWidget.currentItem().text()

【讨论】:

是的,可以,知道如何选择多个并将它们全部打印出来吗? 对不起,我不知道,也许 Qt 的文档可以帮助你(它是为 C++ 编写的,但可以很容易地翻译成 python,因为函数和类的名称是相同的。) QListWidget: doc.qt.io/qt-5/qlistwidget.html 如果您在从 C++ 到 python 的翻译中遇到困难,也许这个问题可以帮助您:***.com/questions/60422323/… 好的,谢谢我一直在查看这些文档,不幸的是我没有足够的经验来知道如何管理它,我没有在文档中看到可以使用 .text 的选项任何一个。我需要更多的经验和时间来使用这个框架 如果您需要获取所有选定的项目,您应该在问题中指定它。由于返回的是 QListWidgetItem,因此您需要查看它的documentation。考虑到虽然 Qt 文档是针对 C++ 的,但 PyQt/PySide 中 99% 的函数和返回值是相同的。【参考方案2】:

如果你需要获取所有选中的项目,你必须使用视图的selectionModel()selectedIndexes() 返回未排序的唯一 QModelIndexes 列表:

selection = self.listWidget.selectionModel()
indexes = sorted(selection.selectedIndexes(), key=lambda i: i.row())
for index in indexes:
    print(index.data())

【讨论】:

以上是关于如何在pyqt5 QlistWidget中选择当前项目的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 中 QListWidget 怎么获取 item 中 combox 的当前显示的值

PyQt5:当列表失去焦点时设置 QListWidget 选择颜色

如何在 PyQt5 中返回 QlistWidget 中项目的值

如何在两个 QListWidget 之间移动项目?

在PyQt5中的QTreeWidget和QListWidget之间拖动项目?

一旦选择并按下 QButton,如何从 QListWidget 对象中获取项目作为字符串