2010-11-01 42 views
0

J'expérimente avec PyQT, et j'essayais de comprendre comment le faire fonctionner avec Firebird. J'ai construit le pilote Firebird, mais je n'arrivais pas à le faire fonctionner, donc je pensais que je ne le mettais pas au bon endroit. J'ai donc essayé d'expérimenter avec le pilote SQLite, puisque PyQT est déjà installé avec des exemples de travail. Je me suis dit que si je renommais tous les fichiers de pilote qsqlite4.dll que je pouvais trouver, le programme exemple finirait par cesser de fonctionner quand je renommerais celui qu'il utilisait réellement. Cela n'a pas fonctionné. J'ai donc essayé de renommer le dossier "site-packages \ pyqt4 \ plugins \ sqldrivers" en "paquets-site \ pyqt4 \ plugins \ sqldrivers-old", et c'est ce que j'ai fait. L'exemple de programme a cessé de fonctionner. J'ai donc changé le nom du dossier, et j'ai essayé de renommer tous les fichiers du dossier. Mais le programme d'exemple a recommencé à fonctionner. Ensuite, j'ai déplacé le fichier qsqlite4.dll dans un sous-répertoire, et il a cessé de fonctionner. Donc je l'ai déplacé, et l'ai renommé en blah.blah.blah. Et ça a encore marché. Ensuite, j'ai ouvert blah.blah.blah avec notepad ++, et j'ai supprimé certaines choses en haut du fichier, ce qui a empêché le programme d'exemple de fonctionner. Donc je suis confus. Pour autant que je sache, soit Python, PyQT, QT ou Windows Vista trouve la DLL, peu importe ce que je le renommer, tant que c'est dans le bon dossier. J'ai même essayé de renommer le nom de l'un des autres dll, pensant que cela pourrait le perturber. Mais cela m'a seulement troublé. Est-ce normal?Soit Python, PyQT, QT ou Windows Vista trouve ma DLL, peu importe ce que je le renommer. Est-ce normal?

edit: Je pense cela a quelque chose à voir avec les plugins

Répondre

0

Oui, l'infrastructure de plug-in Qt est assez simple et robuste.

Il tente de charger tous les fichiers dans le répertoire sqldrivers. Si elle réussit, chaque DLL exécute alors une fonction qui enregistre toutes les fonctionnalités supportées par un plugin.

Ensuite, votre application s'initialise. Si toutes les fonctionnalités dont il a besoin sont disponibles, cela fonctionne correctement, sinon, une forme d'erreur ou de gestion des exceptions se produit.