获取 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 选择颜色