有没有办法清除 QListWİdget 中除 1 个特定行以外的所有行
Is there a way to clear all but 1 specific row in QListWİdget
有两种类型的行,一种是 Pizza,另一种是 Client。
def addClient(self):
self.listWidget.clear()
self.listWidget.addItem("client")
添加新行 'Client' 后,我可以清除所有其他行,但是当我添加另一个客户端时,我的第一个客户端行也被删除了,我希望第一个客户端不受清除 function.Example 的影响行数;
-Client(first)
-Pizza
-Pizza
当我添加新客户时;
-Client(first)
-Client(second)
当我添加几行披萨时;
-Client(first)
-Client(second)
-Pizza
-Pizza
最后,当我添加另一个客户端时;
-Client(first)
-Client(second)
-Client(third)
正如我清楚地表明的那样,当我使用清除功能并清除任何其他行时,我想保留每个客户端行。
您不必使用clear()
,您要做的是过滤具有"Pizza"作为文本的项目并从QListWidget中将它们一一删除:
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.list_widget = QtWidgets.QListWidget()
client_btn = QtWidgets.QPushButton("add client")
client_btn.clicked.connect(self.add_client)
pizza_btn = QtWidgets.QPushButton("add pizza")
pizza_btn.clicked.connect(self.add_pizza)
grid = QtWidgets.QGridLayout(self)
grid.addWidget(self.list_widget, 0, 0, 1, 2)
grid.addWidget(client_btn, 1, 0)
grid.addWidget(pizza_btn, 1, 1)
@QtCore.pyqtSlot()
def add_client(self):
client_items = self.list_widget.findItems(
"Pizza",
QtCore.Qt.MatchExactly
)
for item in reversed(client_items):
row = self.list_widget.row(item)
it = self.list_widget.takeItem(row)
del it
self.list_widget.addItem("Client")
@QtCore.pyqtSlot()
def add_pizza(self):
self.list_widget.addItem("Pizza")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
有两种类型的行,一种是 Pizza,另一种是 Client。
def addClient(self):
self.listWidget.clear()
self.listWidget.addItem("client")
添加新行 'Client' 后,我可以清除所有其他行,但是当我添加另一个客户端时,我的第一个客户端行也被删除了,我希望第一个客户端不受清除 function.Example 的影响行数;
-Client(first)
-Pizza
-Pizza
当我添加新客户时;
-Client(first)
-Client(second)
当我添加几行披萨时;
-Client(first)
-Client(second)
-Pizza
-Pizza
最后,当我添加另一个客户端时;
-Client(first)
-Client(second)
-Client(third)
正如我清楚地表明的那样,当我使用清除功能并清除任何其他行时,我想保留每个客户端行。
您不必使用clear()
,您要做的是过滤具有"Pizza"作为文本的项目并从QListWidget中将它们一一删除:
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.list_widget = QtWidgets.QListWidget()
client_btn = QtWidgets.QPushButton("add client")
client_btn.clicked.connect(self.add_client)
pizza_btn = QtWidgets.QPushButton("add pizza")
pizza_btn.clicked.connect(self.add_pizza)
grid = QtWidgets.QGridLayout(self)
grid.addWidget(self.list_widget, 0, 0, 1, 2)
grid.addWidget(client_btn, 1, 0)
grid.addWidget(pizza_btn, 1, 1)
@QtCore.pyqtSlot()
def add_client(self):
client_items = self.list_widget.findItems(
"Pizza",
QtCore.Qt.MatchExactly
)
for item in reversed(client_items):
row = self.list_widget.row(item)
it = self.list_widget.takeItem(row)
del it
self.list_widget.addItem("Client")
@QtCore.pyqtSlot()
def add_pizza(self):
self.list_widget.addItem("Pizza")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())