2012-01-08 24 views
9

soy nuevo en PyQt y aun así estoy un poco confundido. Tengo una estructura de archivos de texto así:Python - PyQt - Widget de QTalta - agregando filas

  • Nombre Apellidos Teléfono Email

Cuando los espacios son en realidad las pestañas "\ t" ahora cuando leí este archivo pizca de mi método Deseo poblar el Widget QTable .

Mi QTable Widget tiene 4 columnas llamadas Name, Surname, Telephone, Email Ahora tiene ninguna fila, pero al leer las líneas del archivo y dividir cada línea por un tabulador que desea añadir una nueva fila que en cada columna contiene todo lo estaba en la línea.

¿Alguien podría indicarme cómo hacerlo porque no puedo encontrar una solución o un método ofrecido por QTable Widget que le permita esto?

Respuesta

14

Cuando desee completar QTableWidget, debe configurar los recuentos de filas y columnas antes de insertar los datos example in documentation (la documentación de PySide es mejor que PyQt). Y no puede simplemente insertar cadena de texto separada por pestañas en la tabla, debe prepararla usted mismo y luego completar la tabla con QTableWidgetItem llamando al QTableWidget.setItem. Se parece a esto:

entries = [] 
with open('data') as input: 
    for line in input: 
     entries.append(line.strip().split('\t')) 

tableWidget.setRowCount(len(entries)) 
tableWidget.setColumnCount(len(entries[0])) 

for i, row in enumerate(entries): 
    for j, col in enumerate(row): 
     item = QTableWidgetItem(col) 
     tableWidget.setItem(i, j, item) 

Estoy asumiendo que usted tiene data archivo con las entradas, y tableWidget es QTableWidget ejemplo.

En este archivo de ejemplo analizado a mano, pero considere usar standart csv module para esta tarea.

+0

Gracias por la ayuda. Cambié mi aplicación de interfaz gráfica de usuario donde mi método lee el archivo por líneas y agrega líneas a una lista como lo hizo. Muchas gracias. –

+0

Para algunos principiantes de Python, como yo: creo que para usar QTableWidgetItem tienes que importar QtGui de PyQt4 (de PyQt4 import QtCore, QyGui) y usar QtGui.QTableWidgetItem en lugar de QTableWidgetItem solo. –