PyQt5删除QListWidget中的item

app = qtw.QApplication(sys.argv)
win = qtw.QMainWindow()

def build():
    ui = d1.Ui_Form()
    ui.setupUi(win)
    ui.pbtn_add.clicked.connect(add_item)
    ui.pbtn_remove.clicked.connect(remove_item)

def add_item():
    lst = win.findChild(QListWidget,'lw')
    item = qtw.QListWidgetItem(lst)
    dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    item.setText(dt)
    item.setToolTip(f'当前时间:{dt}')

def remove_item():
    lst = win.findChild(QListWidget,'lw')
    if lst.count()>0:
        for i in range(lst.count()-1,-1,-1):
            item = lst.item(i)
            if item.isSelected():
               lst.removeItemWidget(lst.takeItem(i))
                
def main():
    build()
    win.show()
    sys.exit(app.exec())

main()

新增按钮会在QListWidget中添加当前的事件,而删除按钮是用来删除选中的QListWidgetItem对象的.

删除按钮的点击信号连接到了槽函数remove_item,函数首先利用容器和QListWidget的objectName反射找到QListWidget对象.

然后开始遍历QListWidget中的item,因为遍历要跟着删除,所以采用倒遍历的方式.

如果发现一个item是被选中的,那么要用takeItem函数将这个位置的item选出来,选出会让该item与QListWidget割断联系,然后再用removeItemWidget将其删除.

QListWidget只能删除割断联系的item,所以,没有选出(takeItem)的item是不能被删除的.

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页