Pergunta

Atualmente estou tentando migrar um legado aplicação VBA / Microsoft Access para Python e PyQt. Eu não tive nenhum problema migrando qualquer da lógica, ea maioria das formas de ter sido um piscar de olhos, também. No entanto, eu bati um problema na parte mais importante da aplicação -. A forma de entrada de dados principal

O formulário é basicamente uma fileira de caixas de texto correspondentes aos campos no banco de dados. O utilizador simplesmente introduz dados para um campos, guias para a seguinte e repete. Quando ele vem para o fim do registo / linha, ele tablatura novamente, e a forma cria automaticamente uma nova linha em branco para ele começar a digitar os dados novamente. (Na realidade, ele exibe uma linha "em branco" abaixo do recorde atual, que o usuário pode realmente clicar no para iniciar uma nova registros também.) Ele também permite que o usuário para rolar para cima e para baixo para ver todo o subconjunto atual de registros que ele está trabalhando.

Existe uma maneira de replicar essa funcionalidade em PyQt? Eu não conseguiram encontrar uma maneira de obter Qt para fazer isso facilmente. Acesso cuida dele automaticamente; nenhum código de fora da forma é necessária. É assim tão fácil em PyQt (ou mesmo próximo), ou isso é algo que está indo a necessidade de ser programado a partir do zero?

Foi útil?

Solução

Você deve olhar para QSqlTableModel, eo QTableView objetos. QSqlTableModel oferece uma abstração de uma tabela relacional que pode ser usado dentro de uma das classes vista Qt. Um QTableView por exemplo. A funcionalidade que você descreve pode ser implementado com esforço moderado apenas usando essas duas classes.

O QSqlTableModel também suporta a edição em campos de banco de dados.

Meu acho que a única funcionalidade que você terá que implementar manualmente é o "TAB" no final da tabela para criar uma nova linha se você quiser manter isso.

Eu não sei muito sobre o Access, mas usando o driver ODBC SQL você deve ser capaz de usar o banco de dados de acesso real para o seu desenvolvimento ou testando há algumas informações mais velho aqui , você pode querer considerar a mudança para Sqlite, Mysql ou outro banco de dados SQL real.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top