我使用一个名为Anki的flashcard程序,它是用Python编写的。我想写我的第一个附加组件。我是新来的。我不是一个技术专家,但我有几年在爪哇、C++、C等其他人的代码中跳过的经验。在
例如,一张卡片上写着“法国首都”的问题。当按下“显示答案”按钮时,Anki显示答案“Paris”。在
我想在播放之前把这段文字“巴黎”拿出来。在
我在安基密码里已经到了这一步。此时,卡片上显示“法国首都?”。答案仍然是空白。我想我希望能够抓取“val”(我认为是“Paris”)并在我的插件中使用它。在
def _getTypedAnswer(self):
self.web.evalWithCallback("typeans ? typeans.value : null", self._onTypedAnswer)
def _onTypedAnswer(self, val):
self.typedAnswer = val
self._showAnswer()
我一直在谷歌上搜索,试图找到这句话的含义:
^{pr2}$我可以访问所有代码,并且可以提供任何可能对响应者有用的代码。在
谢谢。在
补充:在回应者提问后。在
Anki可以在计算机上运行,也可以在互联网上运行。研究卡片的所有结果都是同步的,因此就终端用户而言,这两种方法之间没有区别。在
从“webview”类中:
def evalWithCallback(self, js, cb):
self.page().runJavaScript(js, cb)
“审阅者”类显示问题和答案。“审阅者”窗口为“mw”(表示“主窗口”)
这是类“reviewer”的init语句
def __init__(self, mw):
self.mw = mw
self.web = mw.web
这只需使用两个参数调用}。您可以从您发布的代码中看到
^{pr2}$evalWithCallback
方法:字符串"typeans ? typeans.value : null"
和方法对象{evalWithCallback
对此做了什么:因此
evalWithCallback
接受字符串并将其作为JavaScript运行。从这一点上还不清楚如何调用回调(例如,将使用什么参数调用它),但代码所做的实质是将字符串typeans ? typeans.value : null
作为JavaScript执行,然后调用函数self._onTypedAnswer
。我的猜测是传递给val
的参数是JS表达式求值的结果。在顺便说一下,从名称“typed answer”判断,我猜
val
不是问题的正确答案,而是用户的猜测(即用户输入的值)。在一旦在代码中找到所需变量的位置,有多种方法可以将这些信息提取到您自己的代码中。在
如果允许直接操作源代码,则可以将val作为属性分配给问题中所示方法中的其他对象。在
例如:
typeans ? typeans.value : null
是一个C/C++/C#
(可能还有Java,不记得了)代码等价于(伪代码)("typeans ? typeans.value : null", self._onTypedAnswer)
是一个元组,它将这行代码作为字符串包含。在相关问题 更多 >
编程相关推荐