获取 QListWidget PyQt5 中所选项目的名称

Posted

技术标签:

【中文标题】获取 QListWidget PyQt5 中所选项目的名称【英文标题】:Get the name of a chosen item in QListWidget PyQt5 【发布时间】:2018-02-22 10:51:41 【问题描述】:

在为科学目的开发应用程序时,我很难将项目添加到 QListWidget。我没有找到 PyQt5 的任何文档,所以决定在这里询问。我不确定QListWidget的使用是否正确,如果我错了,请纠正我。

UPD:下一次迭代。

我做了什么。

    我将文件夹内容的名称和路径放入一个数组中。在第一列中我得到文件的名称,在第二列中获得它们的路径。

    sample_directory = []
    
    sample_files = []
    
    for (dirpath, dirnames, filenames) in walk('./Samples'):
        sample_files.extend(filenames)
        break
    
    paths = []    
    
    for i in range(len(sample_files)):
        path = os.path.realpath(sample_files[i])
        paths.append(path)
    
    
    sample_directory.append(sample_files)
    sample_directory.append(paths)
    

[['exmpl1.xlsx', 'exmpl2.xlsx'], ['/Users/Graygood/Desktop/Science 计算机/应用程序/exmpl1.xlsx', '/Users/Graygood/Desktop/Science 计算机/应用程序/exmpl2.xlsx']]

    接下来,我将sample_directory的第一列添加到QListWidget self.sampleChoose_list.addItems(sample_directory[0])

我现在需要什么。

单击按钮时,选择文件时,应将文件的路径提供给处理函数。我该怎么做?如何调用所选文件?

Process 函数是一个函数,它获取所选项目的路径,使用pandas.read_excel(sample_directory[0][0]) 读取它并使用数组进行一些工作。比如:

def process(self):
    sample = pd.read_excel(path_of_a_chosen_file)
    #Where path_of_a_chosen_file is sample_directory[1][i] and i - index of chosen file
    list_of_index = []
    for i in range(len(sample.columns)):
        sample2 = sample.iloc[:, lambda sample: [i]]
        sample2 = sample2.columns[0]
        list_of_index.append(sample2)
    list_of_index
return self.list_of_index

【问题讨论】:

如果你需要帮助,你需要更好地解释你想做什么以及你做了什么。 Qlistview 应该可以很好地构建项目列表。但是,如果有嵌套文件夹,树视图也可以很好地显示文件夹内容。 @Yohboy 更新了更多信息。也许还需要一些东西? @Graygood 你有几个任务要执行,第一个任务是读取文件夹并获取文件名和路径,第二个任务是循环迭代并使用你知道的 addItem 方法。 @eyllanesc 做到了这一点。请给我一些下一步的指示好吗? 什么是过程函数?如果您希望我们为您提供帮助,您必须提供minimal reproducible example,您假设我们知道您所知道的,但事实并非如此,我们不在您的大脑中。 【参考方案1】:

要从 QListWidget 中获取选定的行,请使用 self.sampleChoose_list.selectedIndexes()[0].row()(如果选择了多个,这里的 [0] 将只为您提供第一行)。您可以使用此索引来获取与所选文件名对应的路径,并且可以从 process 函数中调用它。

def process(self):
    index = self.sampleChoose_list.selectedIndexes()[0].row()
    path_of_a_chosen_file = self.sample_directory[1][index]
    sample = pd.read_excel(path_of_a_chosensen_file)

要使此解决方案起作用,您必须通过在前面添加 self. 使 sample_directory 成为类变量,以便可以从类的方法中访问它。

【讨论】:

以上是关于获取 QListWidget PyQt5 中所选项目的名称的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 中 QListWidget 怎么获取 item 中 combox 的当前显示的值

PyQt5:当列表失去焦点时设置 QListWidget 选择颜色

PyQt5 QListWidget自定义项目[重复]

PyQt5 检查项目是不是已经在 QListWidget

如何在 PyQt5 中返回 QlistWidget 中项目的值

pyqt5-QListWidget