添加和删除字段的逻辑
在窗口上显示一个list widget的窗口,还有一个添加字段的按钮
点击添加字段会弹出一个输入框,将内容作为一个item添加到list widget中
点击对应的已添加的字段,即会显示删除按钮,点击即可删除该字段
效果
博主定义的此list widget名称为【strListWidget】,代码需要替换为你自己的list widget,【addBtn】同理
由于整体的代码太多,博主这里就写出了关键的代码,对应替换为自己代码即可
需要导入到包
from PyQt5.QtGui import QCursor
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox, QWidget, QInputDialog, QMenu, QAction
绑定对应的事件
# 绑定添加事件
self.addBtn.clicked.connect(self.add_item)
# 绑定删除事件
self.strListWidget.itemClicked.connect(self.show_context_menu)
对应的事件
# 添加对应的字段
def add_item(self):
item_text, ok = QInputDialog.getText(self, "添加字段", "输入内容")
if ok and item_text:
self.strListWidget.addItem(item_text)
# 删除对应的字段
def show_context_menu(self):
context_menu = QMenu(self)
delete_action = QAction("删除", self)
delete_action.triggered.connect(self.delete_item)
context_menu.addAction(delete_action)
pos = self.strListWidget.mapToGlobal(self.strListWidget.viewport().pos()) + self.strListWidget.mapFromGlobal(
QCursor().pos())
context_menu.exec_(pos)
# 删除事件
def delete_item(self):
current_row = self.strListWidget.currentRow()
if current_row >= 0:
self.strListWidget.takeItem(current_row)
效果
添加
删除