[PyQt5] 使用 QListWidget 实现 删除 与 新增

要实现的功能:有个列表可以增加和删除

详细需求:删除按钮不会消失为0个 新增按钮永远在底部

总结:可以使用insertItem方法将widget插入到列表任意一行

实现截图 ↓

【PyQt5】使用 QListWidget 实现 删除 与 新增

#!/usr/bin/python3
# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import *

# 实现的功能:有个列表可以增加和删除
# 详细:删除按钮不会消失为0个 新增按钮永远在底部
class Test(QMainWindow):
    def __init__(self):
        super().__init__()
        self.iniUi()
    def iniUi(self):
        self.setWindowTitle("列表增删功能")
        self.resize(300,300)
        self.setFixedSize(self.width(),self.height())
        #新建一个QListWidget
        self.listwidget = QListWidget(self)
        self.listwidget.move(5,5)
        self.listwidget.resize(self.width()-10,self.height()-10)
        #新建删除按钮
        delbtn = self.PushButtonDel()
        #新建新增按钮
        addbtn = self.PushButtonAdd()
        #将删除按钮添加到列表中
        delitem = QListWidgetItem()
        self.listwidget.addItem(delitem)
        self.listwidget.setItemWidget(delitem,delbtn)
        #将新增按钮添加到列表中
        additem = QListWidgetItem()
        self.listwidget.addItem(additem)
        self.listwidget.setItemWidget(additem,addbtn)

    #删除按钮
    def PushButtonDel(self):
        btn = QPushButton("删除")
        btn.clicked.connect(self.ClickDel)
        return btn
    #新增按钮
    def PushButtonAdd(self):
        btn = QPushButton("新增")
        btn.clicked.connect(self.ClickAdd)
        return btn
    #删除槽
    def ClickDel(self):
        #获取点击的row
        button = self.sender()
        row = self.listwidget.indexAt(button.pos()).row()
        #删除item
        self.listwidget.takeItem(row)
        #如果删除按钮为0,新增一个删除按钮
        if self.listwidget.count() == 1:
            # 新建删除按钮
            delbtn = self.PushButtonDel()
            # 将删除按钮插入到列表中
            delitem = QListWidgetItem()
            self.listwidget.insertItem(0,delitem)
            self.listwidget.setItemWidget(delitem, delbtn)
    # 新增槽
    def ClickAdd(self):
        button = self.sender()
        row = self.listwidget.indexAt(button.pos()).row()
        #新建删除按钮
        delbtn = self.PushButtonDel()
        #新建新增按钮
        addbtn = self.PushButtonAdd()
        #将新建修改成删除按钮
        self.listwidget.setItemWidget(self.listwidget.item(row),delbtn)
        #将新增按钮添加到列表中
        additem = QListWidgetItem()
        self.listwidget.addItem(additem)
        self.listwidget.setItemWidget(additem,addbtn)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Test()
    window.show()
    sys.exit(app.exec_())
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!