2009-07-11 9 views
2

Je tente actuellement de migrer une application VBA/Microsoft Access héritée vers Python et PyQt. Je n'ai eu aucun problème à migrer une partie de la logique, et la plupart des formulaires ont également été utilisés. Cependant, j'ai rencontré un problème sur la partie la plus importante de l'application - le formulaire principal de saisie de données.PyQt Répétition automatique des formulaires

Le formulaire est essentiellement une ligne de zones de texte correspondant aux champs de la base de données. L'utilisateur entre simplement des données dans un champs, des tabulations à l'autre et répète. Quand il arrive à la fin de l'enregistrement/ligne, il tabule à nouveau, et le formulaire crée automatiquement une nouvelle ligne vide pour qu'il commence à entrer des données à nouveau. (En réalité, il affiche une ligne "vide" sous le nouvel enregistrement actuel, sur lequel l'utilisateur peut cliquer pour commencer un nouvel enregistrement.) Il permet également à l'utilisateur de faire défiler vers le haut et vers le bas pour voir tout le sous-ensemble actuel des dossiers sur lesquels il travaille.

Existe-t-il un moyen de répliquer cette fonctionnalité dans PyQt? Je n'ai pas réussi à trouver un moyen d'obtenir Qt pour le faire facilement. Access prend soin d'elle automatiquement; aucun code en dehors du formulaire n'est requis. Est-ce si facile dans PyQt (ou même proche), ou est-ce quelque chose qui va devoir être programmé à partir de zéro?

Répondre

3

Vous devriez regarder dans QSqlTableModel, et les objets QTableView. QSqlTableModel propose une abstraction d'une table relationnelle qui peut être utilisée à l'intérieur des classes d'affichage Qt. Un QTableView par exemple. La fonctionnalité que vous décrivez peut être implémentée avec un effort modéré simplement en utilisant ces deux classes.

Le QSqlTableModel prend également en charge l'édition des champs de base de données.

Ma conjecture que la seule fonctionnalité que vous aurez à mettre en œuvre manuellement est le "TAB" à la fin de la table pour créer une nouvelle ligne si vous voulez garder cela. Je ne sais pas grand-chose sur Access, mais en utilisant le pilote ODBC-SQL, vous devriez pouvoir utiliser la base de données d'accès réelle pour votre développement ou tester il y a quelques informations plus anciennes here, vous pourriez envisager de passer à Sqlite, Mysql ou une autre base de données SQL réelle.

+0

+1 Voici la solution que je trouverais avec le framework PyQt. – ChristopheD