几天前我问了这个问题:
我在你的帮助下解决了这个问题。现在我只是在方法中添加了几行,并且我得到了一个我以前没有的索引错误。
这是我添加额外行的代码:
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"。
我真的不知道问题出在哪里。
希望你能帮助我。
答案 0 :(得分:1)
您使用的是takeItem()方法,它充当pop()。这意味着当你刚刚使用currentItem()方法时,它会返回下一个项目。
您的解决方案是在调用takeItem()之前调用currentItem()。