SCHeng

It all returns to nothing.

python, vue.js

如何让Vue.js能够调用Python函数?

scheng

这个问题主要来自我今年的暑期项目,eaf-rss-reader。因为前端是使用vue.js,数据处理部分是python,涉及到了文件读写,但是出于安全考虑,vue.js以及js是不直接提供本地文件读写的,在eaf里提供了一种通过 QWebChannel 来实现vue.js调用python函数的方法。

首先,在Vue组件的created()函数中写下如下代码,表示绑定Python端的QWebChannel对象pyobject到JavaScript端的window.pyobject

    created() {
  // eslint-disable-next-line no-undef
  new QWebChannel(qt.webChannelTransport, channel => {
    window.pyobject = channel.objects.pyobject;
  });
}

其次,在Python端定义函数:

from PyQt5 import QtCore

@QtCore.pyqtSlot(str)
def open_in_dired(self, path):
    eval_in_emacs('dired', [path])

最后,直接在Vue组件任意地方调用window.pyobject.open_in_dired(path)即可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注