【问题标题】:Clearing selection in QListWidget清除 QListWidget 中的选择
【发布时间】:2013-02-26 10:22:38
【问题描述】:

我正在使用PyQt4,我在一个窗口中有一个QListWidget,我在运行时向它添加了项目。我想在窗口中使用一个按钮来清除QListWidget的选择。

我想知道是否有任何方法可以实现这一点?

我检查了clear(),但它清除了列表小部件中的项目,但我想清除列表小部件中的选择。

【问题讨论】:

    标签: python pyqt4 qlistwidget


    【解决方案1】:

    使用list_widget.selectionModel().clear()list_widget.clearSelection()(谢谢@ekhumoro!)。

    我修改了 Junuxx 的例子:

    from PyQt4 import QtGui, QtCore
    import sys, random
    
    def clear(listwidget):
        #listwidget.selectionModel().clear()
        listwidget.clearSelection()
    
    app = QtGui.QApplication(sys.argv)
    top = QtGui.QWidget()
    
    # list widget
    myListWidget = QtGui.QListWidget(top)
    myListWidget.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
    myListWidget.resize(200, 300)
    for i in range(10):
        item = QtGui.QListWidgetItem("item {}".format(i), myListWidget)
        myListWidget.addItem(item)
        if random.random() > 0.5: 
            # randomly select half of the items in the list
            item.setSelected(True)
    
    # clear button
    myButton = QtGui.QPushButton("Clear", top)
    myButton.resize(60, 30)
    myButton.move(70, 300)
    myButton.clicked.connect(lambda: clear(myListWidget))
    top.show()
    
    sys.exit(app.exec_())
    

    【讨论】:

    • QListWidget 类继承了QAbstractItemView,所以你可以这样做:myButton.clicked.connect(myListWidget.clearSelection))
    【解决方案2】:

    你应该可以使用setItemSelected()来做到这一点

    这是一个带有“清除”按钮的 listWidget 的工作示例:

    from PyQt4 import QtGui, QtCore
    import sys, random
    
    def clear(listwidget):
        for i in range(listwidget.count()):
            item = listwidget.item(i)
            listwidget.setItemSelected(item, False)
    
    app = QtGui.QApplication([])
    top = QtGui.QWidget()
    
    # list widget
    myListWidget = QtGui.QListWidget(top)
    myListWidget.setSelectionMode(2)
    myListWidget.resize(200,300)
    for i in range(10):
        item = QtGui.QListWidgetItem("item %i" % i, myListWidget)
        myListWidget.addItem(item)
        if random.random() > 0.5: 
            # randomly select half of the items in the list
            item.setSelected(True)
    
    # clear button
    myButton = QtGui.QPushButton("Clear", top)
    myButton.resize(60,30)
    myButton.move(70,300)
    myButton.clicked.connect(lambda: clear(myListWidget))
    top.show()
    
    sys.exit(app.exec_())
    

    看起来像这样:

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 2011-09-05
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 2019-04-06
      • 2012-07-03
      相关资源
      最近更新 更多