这些论点的意义?

时间:2016-09-15 07:33:16

标签: python anki

我使用一个名为Anki的flashcard程序,它是用Python编写的。我想写我的第一个插件。我是Python的新手。我不是技术人员,但我有几年的经验,可以在Java,C ++,C#等其他人的代码中跳过。

闪存卡显示了一个问题,例如"法国的资本?"。当"显示答案"按下按钮,Anki显示答案" Paris"。

我希望在它出现之前抓住这个文字"巴黎"

我已经在Anki代码中到达了这一点。在这一刻,卡片显示了法国的首都?"。答案仍然是空白。我想我希望能够抓住" val" (我认为是" Paris")并在我的附加组件中使用它。

def _getTypedAnswer(self):
    self.web.evalWithCallback("typeans ? typeans.value : null", self._onTypedAnswer)

def _onTypedAnswer(self, val):
    self.typedAnswer = val        
    self._showAnswer()

我一直在谷歌搜索试图找到这个意思:

("typeans ? typeans.value : null", self._onTypedAnswer)

我可以访问所有代码,并且我可以提供可能对响应者有用的任何代码。

感谢。

补充:在回复者的问题之后。

Anki可以在计算机或互联网上运行。学习卡的所有结果都是同步的,因此就最终用户而言,一种方法或另一种方法之间没有区别。

来自" webview"类:

def evalWithCallback(self, js, cb):
    self.page().runJavaScript(js, cb)

"评论家"课程显示问题和答案。评论者窗口是" mw" (对于"主窗口")

这是"评论员"

的初始声明
def __init__(self, mw):
    self.mw = mw
    self.web = mw.web

4 个答案:

答案 0 :(得分:1)

typeans ? typeans.value : nullC/C++/C#(也可能是Java,不记得)代码等同于(伪代码)

if typans:
   return typeans.value
else:
   return null

("typeans ? typeans.value : null", self._onTypedAnswer)是一个元组,它包含这行代码作为字符串。

答案 1 :(得分:0)

一旦在代码中找到了所需变量的位置,就可以通过多种方式将这些信息提取到您自己的代码中。

如果允许直接操作源,那么您可以将val作为属性分配给您在问题中显示的方法中的其他对象。

例如:

def _onTypedAnswer(self, val):
    self.typedAnswer = val
    myobj.answer = val
    # or call a method on myobj to break flow
    # myobj.method(val)
    self._showAnswer()

答案 2 :(得分:0)

BTW, typeans的确切(和有效)python相当于? typeans.value:null 是:

typeans and typeans.value or None

答案 3 :(得分:0)

self.web.evalWithCallback("typeans ? typeans.value : null", self._onTypedAnswer)

这只是使用两个参数调用evalWithCallback方法:字符串"typeans ? typeans.value : null"和方法对象self._onTypedAnswer。您可以在发布的代码中查看evalWithCallback对此的影响:

def evalWithCallback(self, js, cb):
    self.page().runJavaScript(js, cb)

所以evalWithCallback接受字符串并将其作为JavaScript运行。目前还不清楚回调是如何被调用的(例如,它将被调用的参数),但代码的作用的本质是它作为JavaScript执行字符串typeans ? typeans.value : null然后调用函数{ {1}}。我的猜测是传递给self._onTypedAnswer的{​​{1}}参数将是评估JS表达式的结果。

顺便说一句,从名称“打字的答案”来判断,我猜测val不是问题的正确答案,而是用户的猜测(即用户键入的值)。