Domanda

Al momento sto cercando di migrare un lascito un'applicazione VBA / Microsoft Access per Python e PyQt. Ho avuto problemi migrazione qualsiasi logica, e la maggior parte delle forme sono stato un gioco da ragazzi, pure. Tuttavia, ho colpito un problema sulla parte più importante della richiesta -. Il form di immissione dati principali

La forma è fondamentalmente una fila di caselle di testo corrispondenti ai campi del database. L'utente inserisce semplicemente i dati per un campo, le schede per il prossimo e si ripete. Quando arriva alla fine del record / fila, ha tabs di nuovo, e la forma crea automaticamente una nuova riga vuota per lui per iniziare a immettere i dati di nuovo. (In realtà, viene visualizzata una riga "vuota" di sotto del nuovo record corrente, che l'utente può effettivamente fare clic per per avviare una nuova record pure.) Consente inoltre all'utente di scorrere verso l'alto e verso il basso per vedere tutto il sottoinsieme corrente di record su cui sta lavorando.

C'è un modo per replicare questa funzionalità in PyQt? Io non sono riuscito a trovare un modo per ottenere Qt per fare questo facilmente. L'accesso si occupa automaticamente di esso; non è necessario alcun codice esterno al modulo. E 'che facile in PyQt (o anche vicino), o si tratta di qualcosa che sta per bisogno di essere programmato da zero?

È stato utile?

Soluzione

Si dovrebbe guardare in QSqlTableModel, e gli oggetti QTableView. QSqlTableModel offre un'astrazione di una tabella relazionale che può essere utilizzato all'interno sui classi di visualizzazione Qt. Un QTableView per esempio. La funzionalità si descrive può essere implementato con uno sforzo moderato semplicemente utilizzando queste due classi.

Il QSqlTableModel supporta anche l'editing sui campi del database.

La mia ipotesi l'unica funzionalità che si dovrà implementare manualmente è il "TAB" alla fine della tabella per creare una nuova riga se si desidera mantenere questo.

Io non ne so molto di Access, ma utilizzando il driver ODBC-SQL si dovrebbe essere in grado di utilizzare il database di accesso effettivo per il proprio sviluppo o sperimentazione c'è qualche vecchio informazioni qui , si potrebbe prendere in considerazione di trasferirsi a SQLite, MySQL o un altro database SQL effettivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top