QtAlchemy é uma coleção de Qt Model-View classes e funções auxiliares para ajudar no desenvolvimento rápido de aplicações de banco de dados da área de trabalho. & Nbsp; O objetivo é fornecer uma API forte para expor relações de chave estrangeira em formas elegantes e imediatas para o usuário de aplicações . Os menus de contexto, as buscas e caixas de combinação e interfaces com guias são todos utilizados. O uso de SQLAlchemy torna possível que estas características são suportadas em uma variedade de bases de dados de infraestruturas com praticamente nenhuma alteração de código.
A classe Command dá uma maneira de construir menus e barras de ferramentas de funções do Python decoradas. O poder deste se torna mais evidente quando ligado a uma visão em que a função de comando pode então receber o identificador do item selecionado da visão. Isso fornece uma maneira flexível para ligar comandos para quaisquer pontos de vista consulta sqlalchemy gerados.
A documentação completa está disponível no http://qtalchemy.org.
QtAlchemy foi desenvolvido com python 2.6.x, 0.6.x SQLAlchemy e PyQt 4.7.x. Espera-se que seria funcional em todas as versões próximas. Há um esforço feito para se certificar de que paridade de recursos é atingida para Windows e Linux (e Mac também, mas eu não tenho um).
QtAlchemy é esperado para funcionar plenamente com PySide a partir da versão 1.0.4. Apoio PySide pode ser ativada através da execução do script shell use_pyside.sh que altera apenas as importações provenientes PyQt4 para PySide.
Exemplo
Por uma questão de ser conciso, o exemplo dado aqui não faz referência a um banco de dados.
QtAlchemy usando API2 de PyQt assim que nós precisamos para permitir que, antes de importar PyQt4
& Nbsp; >>> gole de importação
& Nbsp; >>> sip.setapi ('QString', 2)
& Nbsp; >>> sip.setapi ('QVariant', 2)
A classe de propriedade UserAttr fornece ainda um outro tipo definido propriedade python. O objetivo de reinventar este era assegurar que poderíamos interagir com os nossos modelos suficientemente e proporcionar uma experiência uniforme para as propriedades da coluna SQLAlchemy e propriedades UserAttr.
& Nbsp; >>> from qtalchemy importação UserAttr
& Nbsp; >>> datetime import
& Nbsp; >>> Pessoa classe (objeto):
& Nbsp; ... name = UserAttr (str, "Name")
& Nbsp; ... birth_date = UserAttr (datetime.date, "data de nascimento")
& Nbsp; ... age = UserAttr (int, "Idade (dias)", readonly = True)
& Nbsp; ...
& Nbsp; ... @ age.on_get
& Nbsp; ... def age_getter (self):
& Nbsp; - .days ... return (self.birth_date datetime.date.today ())
Com esta declaração, podemos declarar uma pessoa e calcular a sua idade:
& Nbsp; >>> me = Person ()
& Nbsp; >>> me.name = "Joel"
& Nbsp; >>> me.birth_date = datetime.date (1979,1,9)
& Nbsp; >>> #depends me.age de hoje! - #doctest: + SKIP
& Nbsp; 11746
& Nbsp; >>> me.age- (datetime.date.today () - datetime.date (2011,1,9)) dias no aniversário # 1> de PyQt4 importação QtCore, QtGui.
& Nbsp; >>> from qtalchemy MapperMixin importação, LayoutLayout, ButtonBoxButton, LayoutWidget
& Nbsp; >>>
& Nbsp; >>> class PersonEdit (QtGui.QDialog, MapperMixin):
& Nbsp; ... def __init __ (self, pai, pessoa):
& Nbsp; ... QtGui.QDialog .__ o init __ (self, parent)
& Nbsp; ... MapperMixin .__ o init __ (self)
& Nbsp; ...
& Nbsp; ... self.person = pessoa
& Nbsp; ...
& Nbsp; ... vbox = QtGui.QVBoxLayout (self)
& Nbsp; ... mm = self.mapClass (Pessoa)
& Nbsp; ... mm.addBoundForm (vbox, ["name", "birth_date"])
& Nbsp; ... mm.connect_instance (self.person)
& Nbsp; ...
& Nbsp; ... botões = LayoutWidget (vbox, QtGui.QDialogButtonBox ())
& Nbsp; ... self.close_button = ButtonBoxButton (botões, QtGui.QDialogButtonBox.Ok)
& Nbsp; ... buttons.accepted.connect (self.btnClose)
& Nbsp; ...
& Nbsp; ... def btnClose (self):
& Nbsp; ... self.submit () # mudanças descer para modelar no foco de mudanças; garantir que recebe o foco actual
& Nbsp; ... self.close ()
E, agora, nós só precisamos de algum código app para realmente chutar esta off
& Nbsp; >>> app = QtGui.QApplication ([])
& Nbsp; >>> sam = Person ()
& Nbsp; >>> sam.name = "Samuel"
& Nbsp; >>> d = PersonEdit (None, sam)
& Nbsp; >>> d.exec_ () # gui interação - #doctest: + SKIP
& Nbsp; 0
& Nbsp; >>> sam.age # assume seleção de ontem no gui - #doctest: + SKIP
& Nbsp; 1
Desenvolvimento
QtAlchemy ainda está em desenvolvimento do núcleo pesado, tanto quanto o meu horário de trabalho permite. A documentação está crescendo como as idéias são desenvolvidas e eu aprendo esfinge para a geração de documentação geral. Nós nos esforçamos para a cobertura doc-teste completo quanto possível, mas PyQt model-view e gui impor certas complicações no doc-testes.
As minhas expectativas para 0,7 continuar a aumentar assim que eu dei em um comunicado de 0.6.10 com o novo nome de qtalchemy. Este vem emparelhado com um novo (e não realmente acabado) página web http://qtalchemy.org. Antes de uma liberação 0,7, pretendo ter:
- Documento seleção InputYoke
- PBMdiTable e PBSearchDialog mudança para qtalchemy.ext
O que é novo nesta versão:
- apoio Python 3! Sem 2to3 ou outras pegadinhas.
- correções de compatibilidade SQLAlchemy 0.9x
O que é novo na versão 0.8.0:
- Alterar para PySide como importações padrão
- Relaxe licença GPL para LGPL
- Melhorar a mudança jugo manipulação
- Criar novo PopupKeyListing para a entrada de chave estrangeira
O que é novo na versão 0.7.1:
- QueryDataView ganhou habilidade básica para repetir a consulta em cliques de cabeçalho de coluna para a classificação
- alguns doc
- nova família função auxiliar para a utilização de Geraldo em qtalchemy.ext.reporttools
Correções
O que é novo na versão 0.7.0:
- melhor manuseamento de erro de exceção e relatórios para aplicações GUI com consola out
- novo jugo apoiar uma caixa de combinação
- melhorar a documentação jugo
- adicionar exemplos completos para frente de documentação
- vários model / melhorias lista, incluindo a largura da coluna inadimplente
O que é novo na versão 0.6.12:
- BoundCommandMenu tem ranhuras para ser expedida de html entidade obrigatório comandos para html vendo formas
- load estruturado e salvar o alargamento do quadro em BoundDialog
- A nova árvore expondo a QTreeView
- modelo de árvore de apoio em PBTableModel
- melhorou portabilidade PySide e várias-bugs de colisão fixos relacionados a esse
O que é novo na versão 0.6.11:
- ajuda sensível ao contexto e de status dicas para campos
- novo PRECOMMAND / refresh com estrutura CommandEvent permitindo abortar pela tela do ambiente
- melhorias no assistente de importação de dados genérico
- tabela vista melhorias (correções de bugs, atualizações modelo corrigidos para ser mais preciso)
- uso pywin32 ShellExecute em vez de os.system para um melhor suporte do Windows
Sinais
O que é novo na versão 0.6.10:
- renomeado para qtalchemy
- expostos associação do Qt de ícones com comandos que aparecem nos menus e barras de ferramentas
- movido qtalchemy.PBTable para qtalchemy.widgets.TableView
- novo módulo qtalchemy.ext para diálogos comuns (a assistente de importação de dados por agora)
Requisitos :
- Python
Comentários não encontrado