pyqt嵌入了photoshop

时间:2014-10-16 12:48:33

标签: python qt pyqt

这很难解释,我希望这不会成为模糊答案的模糊问题。 如果这不是正确的问题,你可以帮我找到合适的。

我有一个基于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) 在纸上看起来很好..但我无法自己解决这个问题,我或多或少地尝试了不同的方法:

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

我无法在此发布整个代码,但如果您需要的话请告诉我..我可能会展示更多。 非常感谢您的帮助

0 个答案:

没有答案