【问题标题】:How to list all items from QListWidget如何列出 QListWidget 中的所有项目
【发布时间】:2014-04-29 14:01:48
【问题描述】:

如果已经被问过,我很抱歉,但请您再次澄清一下:如何获取 QListWidget 中列出的所有 ListWidgetItems?

稍后发布海报:

它正在发挥作用。列表中有 5 个项目。减一结果 4.

from PyQt4 import QtGui, QtCore

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.lw = QtGui.QListWidget()
        myBoxLayout.addWidget(self.lw)

        for i in range(5):
            QtGui.QListWidgetItem('myItem', self.lw)

        ok_button = QtGui.QPushButton("Print count")
        ok_button.clicked.connect(self.OK)      
        myBoxLayout.addWidget(ok_button) 

    def OK(self):
        # let self.lw haven elements in it.
        items = []
        for x in range(self.lw.count()-1):
            items.append(self.lw.item(x))
        print len(items)

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

【问题讨论】:

    标签: python pyqt4 qlistwidget


    【解决方案1】:

    这是获取 listWidget 中所有 ListWidgetItems 的简单方法。

    lw = QtGui.QListWidget()
    # let lw haven elements in it.
    items = []
    for x in range(lw.count()-1):
        items.append(lw.item(x))
    
    #items will consist a list of ListWidgetItems.
    

    【讨论】:

    • 谢谢!正是需要的!我不确定是否要从 lw.count() 中减去 -1。是什么原因?
    • @Sputnix :因为索引从 0 开始而不是从 1 开始,所以 count 给你的是行中元素的数量,它总是比你的索引多 1。
    • 恐怕并非如此。尝试运行发布在 OM 中的代码。
    • range(x) 生成从 0 到 (x-1) 的范围,因此代码不会将最后一项添加到列表中。它应该是“for x in range(lw.count())”
    【解决方案2】:

    从 QlistWidget 对象中提取值

    def Extract(self):
        lst = QtGui.QListWidget()
        items = []
        for x in range(lst.count()):
            items.append(lst.item(x).text())
        print(items) 
    

    【讨论】:

      【解决方案3】:

      这是实现这个的pythonic方法:

      lw = QtGui.QListWidget()
      items = [lw.item(x) for x in range(lw.count())]
      

      或者如果你想要一个字符串列表:

      lw = QtGui.QListWidget()
      items = [lw.item(x).text() for x in range(lw.count())]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 2018-04-22
        • 2015-05-28
        • 2018-09-13
        • 2020-10-12
        • 2020-09-18
        相关资源
        最近更新 更多