두 가지 유형의 행이 있습니다. 하나는 Pizza이고 다른 하나는 Client입니다.
def addClient(self):
self.listWidget.clear()
self.listWidget.addItem("client")
새 행 '클라이언트'가 추가되면 다른 모든 행을 지울 수 있지만 다른 클라이언트를 추가하면 첫 번째 클라이언트 행도 삭제되고 첫 번째 클라이언트가 지우기 기능의 영향을받지 않기를 원합니다.
-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_())
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다