这很难解释,我希望这不会成为模糊答案的模糊问题。 如果这不是正确的问题,你可以帮我找到合适的。
我有一个基于Listener的Photoshop插件,因此它可以捕获用户的任何输入。 该插件创建了一个python模块(此处称为" ps"),基本上包含了photoshop窗口的hInstance和hwnd。
然后这个插件,在模块的插件中使用普通的python命令,如
PyRun_SimpleString("import Photoshop");
PyRun_SimpleString("Photoshop.showTools()");
将加载一个特殊模块(这里称为" Photoshop"),它将初始化pyqt并使用QtWinMigrate和ps模块来获取hInstance,如下所示:QMfcApp.pluginInstance(ps.GetPluginInstance())
,将在photoshop中启动pyqt 。这里是使用ps模块的Photoshop模块的示例代码:
from PyQt4.QtWinMigrate import QMfcApp
from PyQt4.QtGui import QPushButton
import ps #this is implemented in the photoshop plugin (based on the Listener plugin)
#create the plugin instance here
app=QMfcApp.pluginInstance(ps.GetPluginInstance())
def showTools():
box = QPushButton()
box.show()
app.exec_()
然后,序列如下: 当插件在photoshop" ps"创建模块,然后它将加载" Photoshop"将正确加载和绑定pyqt的模块。在" Photoshop"模块我可以加载任何python模块,小部件正常工作,一切都在Photoshop中运行良好。
但现在的问题是:在Photoshop中使用Wacom平板电脑的行程灵敏度高,驱动器工作正常,其他一切工作但压力敏感。
显然QMfcApp.pluginInstance
会安装一个事件过滤器来驱动Qt事件循环,而photoshop仍然拥有事件循环。 (http://doc.qt.digia.com/solutions/4/qtwinmigrate/qmfcapp.html)
在纸上看起来很好..但我无法自己解决这个问题,我或多或少地尝试了不同的方法:
QApplication
,问题就会开始,平板电脑就会失去压力。即使我之前写过的代码很少。
有人可能已经将pyqt作为插件放在其他地方,因为QMfcApp
的唯一目的显然就是这个。有什么我可以配置使其工作?是一个已知的问题?
我宁愿保持这种方法(而不是像COM一样在外部连接到photoshop)我无法在此发布整个代码,但如果您需要的话请告诉我..我可能会展示更多。 非常感谢您的帮助