Latest posts on QPluginLoader topichttps://python.su/forum/topic/805/2007-05-22T19:42:09+03:00Общий :: GUI :: QPluginLoader
2007-05-22T19:42:09+03:00Mixolap5401<blockquote><em>Андрей Светлов</em><br/>А на сях ты этот plugin.instance() кастовал к своему типу - и все было хорошо?</blockquote>да так и было:<br/>QObject *plugin = loader.instance();<br/>BrushInterface *iBrush = qobject_cast<BrushInterface *>(plugin);<br/>…<br/>видимо правда придется думать в сторону замотки ((((
Общий :: GUI :: QPluginLoader
2007-05-21T21:26:08+03:00Андрей Светлов5380А на сях ты этот plugin.instance() кастовал к своему типу - и все было хорошо?<br/>Прийдется либо написать сяйную замотку, чтобы питон это увидел.<br/>Замотать интерфейс, обкрутить его. Унаследоваться от интерфейса в плагине<br/><br/>Или ограничится в общении с плагином сообщениями.
Общий :: GUI :: QPluginLoader
2007-05-21T18:05:20+03:00Mixolap5377Сенкс, хоть кто-то откликнулся, <br/>навеяло следующее:<br/><PyQt4.QtCore.QObject object at 0xb7ecfe2c> <class ‘PyQt4.QtCore.QObject’> <br/>Traceback (most recent call last):<br/> File “myplug.py”, line 14, in ?<br/> obj.filters()<br/>AttributeError: filters<br/><br/>то есть obj считается классом QObject (что в принципе верно, так как экспортируемый класс наследуется от QOject)<br/>как теперь дать знать питону о том что это класс: ExtraFilterPlugin
Общий :: GUI :: QPluginLoader
2007-05-20T23:37:18+03:00Андрей Светлов5359А ты глянь:<br/> if plugin.load():<br/> obj = plugin.instance()<br/> <strong> print obj, type(obj), dir(obj) </strong><br/> if obj != None:<br/> obj.filters()<br/><br/>Может, список аттрибутов что-то навеет?
Общий :: GUI :: QPluginLoader
2007-05-17T17:55:01+03:00Mixolap5303Есть dll, написанный на C++ (QT), программа написанная на С++ его нормально подгружает и удачно использует объект в нем => плагин нормально работает.<br/>Подключаю его через pyQT кодом:<br/><br/>import sys<br/>from PyQt4 import QtGui,QtCore<br/><br/>if __name__ == “__main__”:<br/> a = QtGui.QApplication(sys.argv)<br/> <br/> plugin = QtCore.QPluginLoader(“libpnp_extrafilters.so”)<br/> if plugin.load():<br/> obj = plugin.instance()<br/> if obj != None:<br/> obj.filters()<br/> sys.exit(0)<br/><br/>и получаю такую вот ошибку:<br/>Traceback (most recent call last):<br/> File “myplug.py”, line 12, in ?<br/> obj.filters()<br/>AttributeError: filters<br/><br/>Чего я в коде не дописал? Может как-то надо подключить заголовочный файл интерфейса плагина?<br/>или может кто подскажет другие способы загрузки из динамической библиотеки объекта в питоне? (без модификации самого кода объекта)