2016-11-10 1 views
0

Мне нужно вызвать метод для набора аргументов с помощью PyQt5's QTableWidget, в частности PyQt5.QTableWidget.setItem.Python: Map с методом класса, который требует аргументов

У меня есть этот список строк,

row = ["a","b","c","d"] 

и мне нужно поставить каждый элемент в столбце таблицы, за исключением первой. То, что я пробовал, это

items = [ QTableWidgetItem(r) for r in row[1:] ] 
arguments = zip([rowNumber+1]*(len(row)-1), range(1,len(row)), items) 
putItem = lambda x:tableWidget.setItem(*x) 
import itertools 
itertools.starmap(putItem, arguments) 

Я также пробовал с картой и без аргументов, но ничего не работает. Я знаю, что могу сделать цикл for по аргументам, но мне нужно «более элегантное» решение карты.

Основная проблема заключается в том, что в таблице не отображается никакой информации, хотя нет сообщений об ошибках или предупреждений и ничего.

Спасибо!

+0

«ничего не кажется, работает» Вы получаете ошибку? В таблице нет записей? Какова конкретная проблема? –

+0

Таблица не содержит записей, хотя об ошибке не сообщается. Я добавлю это к вопросу. – oxio

ответ

1

Петля более элегантная, хотя и не такая короткая, ИМХО.

Когда вы создаете генератор (как с помощью starmap), вы должны использовать его для выполнения кода. Например, перейдите к list().

+0

Спасибо! Это сработало, хотя я должен ждать 7 минут, чтобы принять ответ. Теперь я должен исправить проблему, что строки смещены, но это не точка ответа, спасибо большое! – oxio

0

Только для щеколда это, вот разумный способ, чтобы написать этот код:

for column, text in enumerate(row[1:], 1): 
    tableWidget.setItem(rowNumber + 1, column, QTableWidgetItem(text)) 
Смежные вопросы