2016-06-04 6 views
0

여러 함수가있는 클래스가 있으며, 거의 모든 클래스에서 다른 QTableWidgets을 채워야합니다. 주어진 테이블 이름, 헤더 및 데이터가 해당 테이블을 채우는 기능을 만들고 싶습니다.PyQt에서 여러 테이블을 채우는 Python 함수

header = ['Horario teórico', 'Entrada a terminal', 'Salida de terminal', 'Tiempo parcial en terminal'] 
self.ui.tableParada.setRowCount(cantidadFilas) 
self.ui.tableParada.setColumnCount(len(header)) 
self.ui.tableParada.setHorizontalHeaderLabels(header) 

for columnas in range(cantidadFilas): 
    self.ui.tableParada.setItem(columnas, 0, QTableWidgetItem(str(tiempoTeoricoTerminal[columnas]))) 
    self.ui.tableParada.setItem(columnas, 1, QTableWidgetItem(str(tiempoInicioTerminal[columnas].time()))) 
    self.ui.tableParada.setItem(columnas, 2, QTableWidgetItem(str(tiempoFinTerminal[columnas].time()))) 
    self.ui.tableParada.setItem(columnas, 3, QTableWidgetItem(str(tiempoEnTerminal[columnas]))) 

이 내가 생각 해낸 것입니다 (작동하지 않음) :

작동 (단지 하나 개의 테이블 "tableParada는"하지만, 정적 및 작동)되고

def completarTabla(tabla, headerFila, headerColumna, datos): 
    """Completado automático de tabla tipo QTableWidget.""" 
    tabla.setRowCount(len(headerFila)) 
    tabla.setColumnCount(len(headerColumna)) 
    tabla.setHorizontalHeaderLabels(headerColumna) 
    tabla.setVerticalHeaderLabels(headerFila) 

    for fila in range(len(headerFila)): 
     for columna in range(len(headerColumna)): 
      tabla.setItem(fila, columna, QTableWidgetItem(str(datos[fila][columna]))) 

내가 할

headerColumna = ['Horario teórico', 'Entrada a terminal', 'Salida de terminal', 'Tiempo parcial en terminal'] 
headerFila = [] 
completarTabla('tableParada', headerFila, headerColumna, tiempo) 

:

012 I이 함수를 호출 할 때 문제는

str을 함수로 전달한 다음 대체가 작동하지 않는다는 것을 알고 테이블 이름 (tableParada)을 전달하면 작동하지 않습니다. 그 다음 :

  • 작동을 위해 함수에 전달해야하는 것은 무엇입니까?
  • 다른 방법이 있습니까?
  • 심지어 가능합니까?

죄송하지만 저는 Python + PyQt, 객체 지향 프로그래밍에 대한 새로운 기능입니다.이 또한 stackoverflow의 첫 번째 게시물이며 영어는 제 모국어가 아닙니다. 나는 정말로 그것을 올바른 방식으로 만들고 싶습니다.

미리 감사드립니다.

+3

''tableParada' 대신'tableParada'를 전달하려고 했습니까 (즉, 이름을 나타내는 문자열 대신 실제'tableParada' 객체)? 아니면'self.ui.tableParada'라고하면 어떻게 접근할까요? – BrenBarn

+0

내가 게시 한 것처럼했는데 시도하지 않은 내용은 다음과 같습니다. ** self.ui.tableParada **. 완벽하게 작동합니다 (즉, 다음 줄에 새로운 오류가 있음을 의미하지만, 이는 필자가 함수에 매개 변수를 정의한 방식에 문제가 있음). 고마워요! 편집 : 귀하의 답변을 선택할 수 없습니다, 솔루션을 포함하도록 원래 게시물을 편집해야합니까? 죄송합니다, 정말이 새로운! – mvico

+0

원하는 경우 받아 들일 수있는 정보가 포함 된 답변을 추가했습니다. – BrenBarn

답변

0

'tableParada' 대신 self.ui.tableParada을 전달합니다. 실제 위젯 객체를 전달해야합니다.