pyqt嵌入photoshop

2024-09-21 03:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

这是复杂的解释,我希望这不会最终成为一个模糊的问题得到模糊的答案。 如果这不适合问这个问题,你可以帮我找一个合适的。在

我有一个基于侦听器的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模块的示例代码:

^{pr2}$

再说一遍,顺序是这样的: 当插件在photoshop“ps”模块中启动时,它将加载“photoshop”模块,该模块将加载并正确绑定pyqt。在“Photoshop”模块中,我可以加载任何python模块,小部件都能正常工作,Photoshop中的一切工作都非常好。在

但现在的问题是:在Photoshop中使用Wacom平板电脑,松了笔划灵敏度,驱动程序正常工作,其他一切都正常,除了压力敏感。在

显然,QMfcApp.pluginInstance将安装一个事件过滤器来驱动Qt事件循环,而photoshop仍然拥有事件循环。(http://doc.qt.digia.com/solutions/4/qtwinmigrate/qmfcapp.html) 在纸上看起来不错。。但我自己无法解决这个问题,我或多或少地尝试了不同的方法:

  • 侦听器插件不是问题所在。如果侦听器插件运行,但python没有初始化,敏感度可以正常工作。在
  • python本身不是问题。如果侦听器在没有gui或pyqt的情况下启动python,则可以正常工作。在
  • 一旦我调用pluginInstance,它将创建QApplication,问题就开始了,平板电脑的压力也随之消失。即使是我以前写的小代码。 有人可能把pyqt作为一个插件放在其他地方,因为QMfcApp的唯一目的显然就是这个。有什么东西我可以配置让它工作吗?是已知问题吗? 我宁愿保留这种方法(而不是像用COM那样从外部连接photoshop)

我无法在这里发布整个代码,但如果您需要什么,请告诉我。。我也许可以展示更多。 非常感谢你的帮助


Tags: 模块代码插件事件pyrunpyqtps平板

热门问题