获取不正确的索引

时间:2016-02-04 20:56:03

标签: python list indexing pyqt

几天前我问了这个问题:

enter link description here

我在你的帮助下解决了这个问题。现在我只是在方法中添加了几行,并且我得到了一个我以前没有的索引错误。

这是我添加额外行的代码:

class Window(QMainWindow):
  list_1 = []  #The items are strings
  list_2 = []  #The items are strings

  def __init__(self):
    #A lot of stuff in here

  def fillLists(self):
    #I fill the lists list_1 and list_2 with this method

  def callAnotherClass(self):
    self.AnotherClass().exec_()   #I do this to open a QDialog in a new window

class AnotherClass(QDialog):
  def __init__(self, parent):
    super(QDialog,self).__init__(parent)

    self.listWidget = QListWidget()

  def fillListWidget(self):
    #I fill self.listWidget in here

  def deleteItems(self):
    item_index = self.listWidget.currentRow()
    self.listWidget.takeItem(item_index)
    item_selected = self.listWidget.currentItem().text()
    list_2_item = Window.list_2.index(item_selected)

    for index, content in enumerate(Window.list_2):
        if content == item_selected:
            del Window.list_2[index]
            del Window.list_1[index]

            widget = self.parent().splitter.widget(index)
            widget.hide()

            break

所以,当我打印item_selected变量时,文本不是我在ListWidget中选择的那个。例如,如果我有2个项目,我选择项目1,item_selected变量打印"项目2"。

我真的不知道问题出在哪里。

希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

您使用的是takeItem()方法,它充当pop()。这意味着当你刚刚使用currentItem()方法时,它会返回下一个项目。

您的解决方案是在调用takeItem()之前调用currentItem()。