Não existe um método simples para mostrar e manipular dados em uma grade na linguagem de programação Python, o método mais simples é bem parecido com o método utilizado em C++, você precisa escrever um código que retorna arrays e vetores para preencher a grade como se fosse uma tabela e precisa escrever métodos que permitem manipular a grade de vários modos, você encontra a toda documentação necessária neste link:
Classe WxGrid: http://wiki.wxpython.org/wxGrid#The_wxGrid_Class
Oracle
Você pode retornar os dados de uma tabela do banco de dados Oracle criando um cursor e executando uma pesquisa sobre ele, você utiliza o método fetchall() para retornar todas as linhas do seu set de dados.
Exemplo:
Neste exemplo criamos uma grade de dados e a preenchemos com os dados retornados de uma pesquisa no banco de dados.
Python
#!/usr/bin/env python
# -*- coding: latin-1 -*-
# Desenvolvimento Aberto
# GradeDados.py
# importa modulos
import wx
import wx.grid
import cx_Oracle
# Cria classe generica de uma WX.Grid
# A classe abaixo faz parte da documentação WXPython oficial
# Este trecho de código é util para manipular a grade
class GenericTable(wx.grid.PyGridTableBase):
def __init__(self, data, rowLabels=None, colLabels=None):
wx.grid.PyGridTableBase.__init__(self)
self.data = data
self.rowLabels = rowLabels
self.colLabels = colLabels
def GetNumberRows(self):
return len(self.data)
def GetNumberCols(self):
return len(self.data[0])
def GetColLabelValue(self, col):
if self.colLabels:
return self.colLabels[col]
def GetRowLabelValue(self, row):
if self.rowLabels:
return self.rowLabels[row]
def IsEmptyCell(self, row, col):
return False
def GetValue(self, row, col):
return self.data[row][col]
def SetValue(self, row, col, value):
pass
# Cria conexão Oracle
def conectarORA():
sconexao = "user/p@55w0rd@localhost/XE"
try:
con = cx_Oracle.connect(sconexao)
except ValueError:
tkMessageBox.showinfo(title="Menssagem", message="Erro de Conexão", parent=janela)
return con
# Cria conexão
con = conectarORA()
# Executa e retorna SQL
def retornaTabelaORA(sql, con):
cursor = con.cursor()
cursor.execute(sql)
return cursor
# Inicializa Grade
dados = []
colLabels = []
rowLabels = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
#Retorna metadados
colunas = retornaTabelaORA("select COLUMN_NAME from ALL_TAB_COLUMNS where TABLE_NAME='BLOG'", con)
metadados = colunas.fetchall()
for cols in metadados:
colLabels.append(str(str(str(str(cols).replace("(","")).replace(")","")).replace(",","")).replace("'",""))
# Envia dados a grid
tabela = retornaTabelaORA("Select * from Blog", con)
resultado = tabela.fetchall()
for conteudo in resultado:
dados.append(conteudo)
# Cria classe da grid
class SimpleGrid(wx.grid.Grid):
def __init__(self, parent):
wx.grid.Grid.__init__(self, parent, -1, pos=(5,60), size=(850,200))
tableBase = GenericTable(dados, rowLabels, colLabels)
self.SetTable(tableBase)
# Cria formulario
class TestFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "Acessando Dados Oracle DataBase", size=(900, 350))
panel = wx.Panel(self, wx.ID_ANY)
label=wx.StaticText(panel, -1, label='WXPython - DataGrid - Oracle Database XE', pos=(300,20))
grid = SimpleGrid(panel)
# Inicializa a aplicação
app = wx.PySimpleApp()
frame = TestFrame(None)
frame.Show(True)
app.MainLoop()


