Python 检查现有列表项,否则添加项

Python 检查现有列表项,否则添加项,python,python-3.x,pyqt5,Python,Python 3.x,Pyqt5,我需要检查用户输入的重复项列表 因此,如果输入“Usa”并再次输入,则会出现一个错误,表明这是无效的 添加已连接到按钮: “添加”部分是其已断开的部分,它显示所有内容,但在messagebox弹出后失败 我尝试使用try和if语句,但我的主要问题是我不确定text.listwidget的输入存储在哪里 from PyQt5 import QtCore, QtWidgets from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QInp

我需要检查用户输入的重复项列表

因此,如果输入“Usa”并再次输入,则会出现一个错误,表明这是无效的

添加已连接到按钮:

“添加”部分是其已断开的部分,它显示所有内容,但在messagebox弹出后失败

我尝试使用try和if语句,但我的主要问题是我不确定text.listwidget的输入存储在哪里

from PyQt5 import QtCore, QtWidgets
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QInputDialog, QDialog, QLineEdit, QMessageBox ,QLabel


class Window(QDialog):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(580, 600)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(Dialog)
        self.verticalLayout_2.setContentsMargins(15, 15, 15, 15)
        self.verticalLayout_2.setSpacing(6)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setContentsMargins(15, 15, 15, 15)
        self.horizontalLayout.setSpacing(6)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.listWidget = QtWidgets.QListWidget(Dialog)
        self.listWidget.setObjectName("listWidget")
        self.horizontalLayout.addWidget(self.listWidget)
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setContentsMargins(15, 15, 15, 15)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setObjectName("verticalLayout")
        self.pushButton_add = QtWidgets.QPushButton(Dialog)
        self.pushButton_add.setObjectName("pushButton_add")
        self.verticalLayout.addWidget(self.pushButton_add)
        self.pushButton_edit = QtWidgets.QPushButton(Dialog)
        self.pushButton_edit.setObjectName("pushButton_edit")
        self.verticalLayout.addWidget(self.pushButton_edit)
        self.pushButton_remove = QtWidgets.QPushButton(Dialog)
        self.pushButton_remove.setObjectName("pushButton_remove")
        self.verticalLayout.addWidget(self.pushButton_remove)
        self.pushButton_up = QtWidgets.QPushButton(Dialog)
        self.pushButton_up.setObjectName("pushButton_up")
        self.verticalLayout.addWidget(self.pushButton_up)
        self.pushButton_down = QtWidgets.QPushButton(Dialog)
        self.pushButton_down.setObjectName("pushButton_down")
        self.verticalLayout.addWidget(self.pushButton_down)
        self.pushButton_sort = QtWidgets.QPushButton(Dialog)
        self.pushButton_sort.setObjectName("pushButton_sort")
        self.verticalLayout.addWidget(self.pushButton_sort)
        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem)
        self.pushButton_close = QtWidgets.QPushButton(Dialog)
        self.pushButton_close.setObjectName("pushButton_close")
        self.verticalLayout.addWidget(self.pushButton_close)
        self.horizontalLayout.addLayout(self.verticalLayout)
        self.verticalLayout_2.addLayout(self.horizontalLayout)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
        self.pushButton_add.clicked.connect(self.add)
        self.pushButton_edit.clicked.connect(self.edit)
        self.pushButton_remove.clicked.connect(self.remove)
        self.pushButton_up.clicked.connect(self.up)
        self.pushButton_down.clicked.connect(self.down)
        self.pushButton_sort.clicked.connect(self.sort)
        self.pushButton_close.clicked.connect(self.close)

        self.label_1 = QLabel(self)
        self.label_1.setText("Enter a country: ")
        self.label_1.move(10, 580)
        self.label_1.resize(280, 40)

        self.Country()

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Covid country"))
        Dialog.setWindowIcon(QIcon("icon.png"))
        self.pushButton_add.setText(_translate("Dialog", "Add"))
        self.pushButton_edit.setText(_translate("Dialog", "Edit"))
        self.pushButton_remove.setText(_translate("Dialog", "Remove"))
        self.pushButton_up.setText(_translate("Dialog", "Up"))
        self.pushButton_down.setText(_translate("Dialog", "Down"))
        self.pushButton_sort.setText(_translate("Dialog", "Sort"))
        self.pushButton_close.setText(_translate("Dialog", "Close"))

    def Country(self):

        self.country = []
        self.listWidget.addItems(self.country)
        self.listWidget.setCurrentRow(0)

    def add(self):
        row = self.listWidget.currentRow()
        text, ok = QInputDialog.getText(self, "Country", "Enter country")
        texts = self.listWidget.items()
        if ok and text is not None:
            self.listWidget.insertItem(row, text)
        if texts in self.listWidget.items():
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setText("No country selected.")
            msg.setWindowTitle("Error")
            msg.exec_()
            return


    def edit(self):
        row = self.listWidget.currentRow()
        item = self.listWidget.item(row)

        if item is not None:
            string, ok = QInputDialog.getText(self, "Country Dialog", "Edit Country",
                                              QLineEdit.Normal, item.text())
            if ok and string is not None:
                item.setText(string)

    def remove(self):
        row = self.listWidget.currentRow()
        item = self.listWidget.item(row)

        if item is None:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setText("No country selected.")
            msg.setWindowTitle("Error")
            msg.exec_()
            return

        reply = QMessageBox.question(self, "Remove Country", "Do You Want To Remove Country " + str(item.text()),
                                     QMessageBox.Yes | QMessageBox.No)

        if reply == QMessageBox.Yes:
            item = self.listWidget.takeItem(row)
            del item

    def up(self):
        row = self.listWidget.currentRow()
        if row >= 1:
            item = self.listWidget.takeItem(row)
            self.listWidget.insertItem(row - 1, item)
            self.listWidget.setCurrentItem(item)

    def down(self):
        row = self.listWidget.currentRow()
        if row < self.listWidget.count() - 1:
            item = self.listWidget.takeItem(row)
            self.listWidget.insertItem(row + 1, item)
            self.listWidget.setCurrentItem(item)

    def sort(self):
        self.listWidget.sortItems()

    def close(self):
        quit()

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Window()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())
从PyQt5导入QtCore、QtWidgets
从PyQt5.QtGui导入QIcon
从PyQt5.qtwidts导入QInputDialog、QDialog、QLineEdit、QMessageBox、QLabel
类窗口(QDialog):
def设置UI(自我,对话框):
setObjectName(“对话框”)
对话框。调整大小(580600)
self.verticalLayout_2=qtwidts.QVBoxLayout(对话框)
自垂直布局2.集合内容边缘(15,15,15,15)
自垂直布局2.设置间距(6)
self.verticalLayout_2.setObjectName(“verticalLayout_2”)
self.horizontalLayout=qtwidts.QHBoxLayout()
self.horizontalLayout.setContentsMargins(15,15,15,15)
自水平布置。设置间距(6)
self.horizontalLayout.setObjectName(“horizontalLayout”)
self.listWidget=qtwidts.QListWidget(对话框)
self.listWidget.setObjectName(“listWidget”)
self.horizontalLayout.addWidget(self.listWidget)
self.verticalLayout=qtwidts.QVBoxLayout()
self.verticalLayout.setContentsMargins(15,15,15,15)
自垂直布局设置间距(6)
self.verticalLayout.setObjectName(“verticalLayout”)
self.pushButton_add=qtwidts.QPushButton(对话框)
self.button_add.setObjectName(“button_add”)
self.verticalLayout.addWidget(self.button\u add)
self.pushButton_edit=qtwidts.QPushButton(对话框)
self.button_edit.setObjectName(“button_edit”)
self.verticalLayout.addWidget(self.button_编辑)
self.pushButton_remove=qtwidts.QPushButton(对话框)
self.button_remove.setObjectName(“button_remove”)
self.verticalLayout.addWidget(self.button_remove)
self.pushButton_up=qtwidts.QPushButton(对话框)
self.butdown\u up.setObjectName(“butdown\u up”)
self.verticalLayout.addWidget(self.button\u up)
self.pushButton_down=qtwidts.QPushButton(对话框)
self.button_down.setObjectName(“button_down”)
self.verticalLayout.addWidget(self.button_down)
self.pushButton_sort=qtwidts.QPushButton(对话框)
self.button_sort.setObjectName(“button_sort”)
self.verticalLayout.addWidget(self.button\u排序)
spaceItem=qtwidts.QSpacerItem(20,40,qtwidts.QSizePolicy.Minimum,qtwidts.QSizePolicy.expansing)
self.verticalLayout.addItem(间隔项)
self.pushButton_close=qtwidts.QPushButton(对话框)
self.button_close.setObjectName(“button_close”)
self.verticalLayout.addWidget(self.button\u关闭)
self.horizontalLayout.addLayout(self.verticalLayout)
self.verticalLayout_2.addLayout(self.horizontalLayout)
自重传(对话框)
QtCore.QMetaObject.connectSlotsByName(对话框)
self.button_添加点击连接(self.add)
self.button\u edit.clicked.connect(self.edit)
self.button_remove.clicked.connect(self.remove)
self.button\u up.clicked.connect(self.up)
self.button_down.clicked.connect(self.down)
self.button_sort.clicked.connect(self.sort)
self.button\u close.clicked.connect(self.close)
self.label_1=QLabel(self)
self.label_1.setText(“输入国家:”)
自我标签1.移动(10580)
self.label_1.调整大小(280,40)
self.Country()
def重新传输(自我,对话框):
_translate=QtCore.QCoreApplication.translate
setWindowTitle(_translate(“Dialog”,“新冠病毒国家”))
setWindowIcon(QIcon(“icon.png”))
self.button_add.setText(_translate(“对话框”,“添加”))
self.button_edit.setText(_translate(“对话框”,“编辑”))
self.button_remove.setText(_translate(“对话框”,“删除”))
self.butdown\u up.setText(\u translate(“Dialog”,“up”))
self.butdown.setText(_translate(“Dialog”,“down”))
self.butdown\u sort.setText(\u translate(“对话框”、“排序”))
self.button_close.setText(_translate(“对话框”,“关闭”))
def国家/地区(自我):
self.country=[]
self.listWidget.addItems(self.country)
self.listWidget.setCurrentRow(0)
def添加(自我):
row=self.listWidget.currentRow()
text,ok=QInputDialog.getText(self,“Country”,“Enter Country”)
text=self.listWidget.items()
如果“确定”和“文本”不是“无”:
self.listWidget.insertItem(行,文本)
如果self.listWidget.items()中的文本:
msg=QMessageBox()
msg.setIcon(QMessageBox.Critical)
msg.setText(“未选择国家/地区”)
msg.setWindowTitle(“错误”)
msg.exec()
返回
def编辑(自我):
row=self.listWidget.currentRow()
item=self.listWidget.item(行)
如果项目不是无:
字符串,ok=QInputDialog.getText(self,“国家对话框”,“编辑国家”,
QLineEdit.Normal,item.text())
如果“确定”和“字符串”不是“无”:
item.setText(字符串)
def移除(自):
row=self.listWidget.currentRow()
item=self.listWidget.item(行)
如果项目为无:
msg=QMessageBox()
msg.setIcon(QMessageBox.Critical)
msg.setText(“未选择国家/地区”)
msg.setWindowTitle(“错误”)
msg.exec()
返回
reply=QMessageBox.question(self,“删除国家”,“是否要删除国家”+str(item.text()),
items = []
for x in range(self.listWidget.count()-1):
    items.append(self.listWidget.item(x))
    def add(self):
    row = self.listWidget.currentRow()
    text, ok = QInputDialog.getText(self, "Country", "Enter country")
    if ok and text is not None:
        items = self.listWidget.findItems(text,QtCore.Qt.MatchExactly)
        if not items:
            self.listWidget.insertItem(row, text)
        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setText("No country selected.")
            msg.setWindowTitle("Error")
            msg.exec_()
            return