如何使用python根据选中项的顺序从另一个列表创建列表

2024-04-19 20:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如何根据用户选择示例从现有列表创建新列表:

l1=[1,2,3,4,5]

如果用户先检查项目3,然后检查项目2 l2=[3,2]

直到现在,如果用户先检查项目3,然后检查项目2 l2=[2,3]

我的问题是如何基于选中项创建列表

代码:

def loadFile(self):
        fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open File", "", "CSV Files (*.csv)");
        self.lineEdit.setText(fileName)
        df = pd.read_csv(fileName)
        model = PandasModel(df)
        self.pandasTv.setModel(model)
        self.df = df

    #part that display items in the qlistWidget
        self.header_list.clear()
        savelist = list(self.df)
        for item in savelist:
            qitem = QtWidgets.QListWidgetItem ( ) 
            qitem.setText ( item ) 
            qitem.setCheckState ( QtCore.Qt.Unchecked ) 
            self.header_list.addItem ( qitem )
        
      
    def selectionChanged(self):
        checked = []
        for row in range(self.header_list.count()):
            item = self.header_list.item(row)
            if item.checkState():
                checked.append(item)
        print("Checked items: ", ", ".join(i.text() for i in checked))
        self.checked = [i.text() for i in checked]

1条回答
网友
1楼 · 发布于 2024-04-19 20:29:01

假设项目是复选框,则可以使用列表检查项目是否已添加,然后根据需要添加。这将为您提供选择顺序

checked = []
def selectionChanged(self):
    global checked
    for row in range(self.header_list.count()):
        item = self.header_list.item(row)
        if item.checkState():
            if not item in checked: checked.append(item) # add item if not already added
        else:
            if item in checked: del checked[item] # remove unchecked items
    print("Checked items: ", ", ".join(i.text() for i in checked))
    self.checked = [i.text() for i in checked]

相关问题 更多 >