qt的listwidget怎么可删除_[PyQt5] 使用 QListWidget 实现 删除 与 新增

本文介绍了如何使用PyQt5中的QListWidget实现列表的动态增删功能,确保删除按钮不会因列表清空而消失,新增按钮始终位于列表底部。通过创建QPushButton并连接信号槽实现点击删除和新增操作。
摘要由CSDN通过智能技术生成

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

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

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

实现截图 ↓

#!/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 协议》,转载必须注明作者和本文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值