Tabela no PyQt

705 views
Skip to first unread message

jonathan.hepp

unread,
Oct 17, 2011, 2:29:44 PM10/17/11
to python-brasil
Estou criando uma pequena aplicação em Python usando a biblioteca Qt
(PyQt).
Esta aplicação é uma agenda que relaciona uma data de um
QCalendarWidget, com a hora de um QTimeEdit e um evento digitado em
uma QLineEdit. Estes dados são armazenados em banco de dados e depois
exibidos em uma lista.
Para isso, inicialmente eu experimentei o QListWidget, mas desisti
quando vi que ele não permitia múltiplas colunas. Aí parti para o
QTableWidget. Já configurei o widget da maneira que eu quero, com 3
colunas, 10 linhas, cores intercaladas, alinhamento variavel, enfim,
tudo pronto.
Mas agora não estou conseguindo inserir os dados na tabela.
Pesquisei muito e pelo que entendi é necessário usar a classe
QTableWidgetItem para inserir os dados e então inserir uma instancia
da classe na tabela. A documentação explica como fazer em C++. Mas em
Python eu não estou conseguindo.
Alguém tem algum exemplo de como inserir dados em um QTableWidget para
me mostrar?

Єvaζdσ

unread,
Oct 17, 2011, 3:08:11 PM10/17/11
to python...@googlegroups.com
Eu faço assim, vê se te ajuda:

 def __AddItemLinhaTabela(self, row, col, valor):
        item = QtGui.QTableWidgetItem()
        item.setText(QtGui.QApplication.translate("MainWindow", valor, None, QtGui.QApplication.UnicodeUTF8))
        item.setTextAlignment(QtCore.Qt.Alignment(QtCore.Qt.AlignCenter))
        self.tableWidget.setItem(row, col, item)


2011/10/17 jonathan.hepp <jonath...@hotmail.com>

--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
   http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:
   python-brasi...@googlegroups.com

jonathan.hepp

unread,
Oct 17, 2011, 3:42:39 PM10/17/11
to python-brasil
Não só ajudou como resolveu meu problema!
Tava quebrando a cabeça com esse problema e não esperava uma solução
tão rápida.
Muito obrigado pela ajuda.
Agora os dados estão jorrando na tabela.
Valeu!



On 17 out, 17:08, Єvaζdσ <evaldoave...@gmail.com> wrote:
> Eu faço assim, vê se te ajuda:
>
>  def __AddItemLinhaTabela(self, row, col, valor):
>         item = QtGui.QTableWidgetItem()
>         item.setText(QtGui.QApplication.translate("MainWindow", valor, None,
> QtGui.QApplication.UnicodeUTF8))
>         item.setTextAlignment(QtCore.Qt.Alignment(QtCore.Qt.AlignCenter))
>         self.tableWidget.setItem(row, col, item)
>
> 2011/10/17 jonathan.hepp <jonathan_h...@hotmail.com>

Artur -Montes Claros MG

unread,
Oct 17, 2011, 6:54:55 PM10/17/11
to python...@googlegroups.com
Meus Dois Centavos também, eu criei uma função "genérica" pra isso em uma classe abstrata...

def popularTabela(self, valores=[], lscampos=[], colunaOrdenacao=0):
        '''
        Essa função Preenche a tabela com os valores de uma lista
        '''
        nvalores = len(valores)
        progresso = QProgressDialog("Populando a Tabela...", "Cancelar", 0, nvalores, self)
        progresso.setWindowTitle("Popular a Tabela")
        progresso.setWindowModality(Qt.WindowModal)
        z = 0
        for x in valores:#com esse loop eu percorro todos os valores das chaves dos dicionários, cada item x é um dicionário
            linha = 0 if self.tblResultado.rowCount() == 0 else self.tblResultado.rowCount()#com isso eu obtenho a linha
            self.tblResultado.insertRow(linha)# insiro a linha na tabela
            i = 0 # Defino o valor das colunas, sempre tem que zerar depois do loop abaixo
            for Item in lscampos: # com esse loop eu percorro as colunas da tabela
                self.tblResultado.setItem(linha, i, QTableWidgetItem(str(x[Item])))#insere o item
                i += 1 #incrementa o contador.
            z += 1
            progresso.setValue(z)
        self.tblResultado.sortByColumn(colunaOrdenacao, Qt.AscendingOrder)
formPesquisa.py
Reply all
Reply to author
Forward
0 new messages