PyQt5 检查项目是不是已经在 QListWidget
Posted
技术标签:
【中文标题】PyQt5 检查项目是不是已经在 QListWidget【英文标题】:PyQt5 check if item is already in QListWidgetPyQt5 检查项目是否已经在 QListWidget 【发布时间】:2020-11-15 13:23:37 【问题描述】:string = QLineEdit.text()
for i in range(my_lists.count()):
if string == my_lists.item(i).text():
print("alrrady exists")
else:
my_lists.addItem(string)
它确实打印已经存在但是。例如,如果我的列表小部件中有 4 个项目。并且输入已经存在,它会打印出“已经存在”并添加3个文本输入的项目。 (它根据项目的数量添加项目,但 -1) 这可能是由 for 循环引起的,所以我在 if 语句中添加了 break。它根据上面的数量添加更多项目。所以我将 break 放在 else 语句中,你可以说它更好,因为它只添加了一个。 (如果您想知道是的,我尝试在它们两个上都添加 break 但它给我的结果与将 break 放在 else 语句中的结果相同)
如果您的列表小部件中有零项,则此代码将不起作用,因此我添加了
if my_lists.count() == 0:
my_lists.addItem(input)
【问题讨论】:
请提供minimal reproducible example "input() #真的是一个Qlineedit,但是写起来更容易。"请不要。input()
不仅是一个 python 内置函数,你不应该覆盖它,而且它也是不必要的和令人困惑的,尤其是对于像这样的共享知识网站。使用QLineEdit
,是一致的,只是长了4个字母,不需要无用的cmets来指定。
这样更好吗?
【参考方案1】:
我试过一次回答我自己的问题,这行得通,但我不确定这是否是正确的方法。
input = QLineEdit.text()
books = []
for i in range(QListWidget.count()):
book = self.bookmarks.item(i).text()
books.append(book)
if input in books:
print("Already exists")
else:
QListWidget.addItem(input)
因为我不能迭代 QListWidgets,所以我想我应该将它的内容移到我可以迭代的东西上。我从那里开始。
【讨论】:
以上是关于PyQt5 检查项目是不是已经在 QListWidget的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PyQt5 中返回 QlistWidget 中项目的值