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 中项目的值

PyQt5/pyqt4 是不是已经支持带有手写识别的 QtVirtualKeyboard?

从 Pyqt5 中的可检查组合框中获取已检查的文本

PyQt5 接收器

检查 localStorage 项目是不是存在不起作用

PyQt5 - 在表格小部件的列中创建一个检查项,即使行数与旋转框不同