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