Question

Je tente actuellement de migrer un héritage VBA applications / Microsoft Access à Python et PyQt. J'ai eu aucun problème migration pas la logique, et la plupart des formulaires ont été un jeu d'enfant, aussi bien. Cependant, je l'ai frappé un problème sur la partie la plus importante de la demande -. La principale forme d'entrée de données

La forme est essentiellement une rangée de zones de texte correspondant à des champs dans la base de données. L'utilisateur saisit simplement les données dans un champs à onglets, à l'autre et se répète. Quand il arrive à la fin de l'enregistrement / ligne, il tabs à nouveau, et la forme crée automatiquement une nouvelle ligne vide pour lui de commencer à entrer les données à nouveau. (En réalité, il affiche une ligne « vide » en dessous du nouveau record en cours, que l'utilisateur peut effectivement cliquer pour commencer un nouveau records aussi bien.) 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 lequel il travaille.

Est-il possible de reproduire cette fonctionnalité dans PyQt? Je n'ai pas réussi à trouver un moyen d'obtenir Qt pour le faire facilement. L'accès prend en charge automatiquement; aucun code en dehors de la forme est nécessaire. Est-il facile à PyQt (ou même fermer), ou est-ce quelque chose qui va devoir être programmé à partir de zéro?

Était-ce utile?

La solution

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

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

Je pense la seule fonctionnalité que vous devrez mettre en œuvre manuellement est le « TAB » à la fin de la table pour créer une nouvelle ligne si vous voulez garder.

Je ne sais pas grand-chose à propos de l'accès, mais en utilisant le pilote ODBC-SQL, vous devriez être en mesure utiliser la base de données d'accès réel pour votre développement ou d'essais il y a quelques informations plus ici , vous voudrez peut-être envisager de passer à SQLite, Mysql ou d'une autre base de données SQL réelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top