Не удается вставить данные массива в QTableWidget PyQt5

Я делаю настольное приложение для научных целей и изо всех сил пытаюсь найти информацию по этой теме.

У меня есть код, который сканирует определенную папку файлов excel и сохраняет ее имена и пути.

sample_directory_2 = []
sample_files_2 = []
for (dirpath, dirnames, filenames) in walk('./Processed'):
    filenames = [f for f in filenames if not f[0] == '.']
    sample_files_2.extend(filenames)
    break
the_dir = "Processed"
paths_2 = [os.path.abspath(os.path.join(the_dir,filename)) for filename in os.listdir(the_dir) if not filename.startswith('.')]    

sample_directory_2.append(sample_files_2)
sample_directory_2.append(paths_2)

Далее у меня есть кусок кода, который получает данные из этих файлов

processed_info = []
for i in range(len(sample_directory_2[0])):
    file_info = []
    sample_file_2 = sample_directory_2[0][i]
    sample_path_2 = sample_directory_2[1][i]            
    sample_info_2 = pd.read_excel(ospath(sample_path_2), header = None, sheetname = 3)
    sample_info_2 = sample_info_2.iloc[0][0:3]
    file_info.append(sample_file_2)
    sample_info_2_list = numpy.array(sample_info_2).tolist() 
    file_info.extend(sample_info_2_list)
    processed_info.append(file_info)

Он сохраняется в массив

[['sample1 (02:03:2018 14-38).xlsx', 3892.523626752876, 18.64406779661017, 0.6938147012986077],

['sample2 (02:03:2018 14-38).xlsx', 6135.581250460564, 79.66101694915254, 0.6072608909734578],

['sample3 (02:03:2018 14-38).xlsx', 3461.456815612303, 5.084745762711865, 0.676008795372024],

['sample4 (05:03:2018 07-28).xlsx', 6135.581250460564, 79.66101694915254, 0.6072608909734578]]

Как вставить эти фрагменты данных в ячейки QTableWidget, где каждый список (например: ['sample1 (02:03:2018 14-38).xlsx', 3892.523626752876, 18.64406779661017, 0.6938147012986077]) вставляется как новая строка с 4 столбцы?

UPD: Нашел способ добавить элемент с

for row in range(len(processed_info)):
        for column in range(len(processed_info[row])):
            self.clickSample_list.setItem(row, column, QTableWidgetItem(processed_info[row][column]))

но по какой-то причине он добавляет только первые элементы списков: скриншот

Как это возможно?


person Graygood    schedule 05.03.2018    source источник


Ответы (1)


Нашел проблему.

self.clickSample_list.setItem(row, column, QTableWidgetItem(processed_info[row][column]))

работает только со строковыми элементами, поэтому я заменил его на

self.clickSample_list.setItem(row, column, QTableWidgetItem(str(processed_info[row][column])))

легко как есть

person Graygood    schedule 05.03.2018