这些论点的意义是什么?

2024-09-27 21:31:14 发布

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

我使用一个名为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

Tags: 答案代码selfwebinitdefjsval
3条回答
self.web.evalWithCallback("typeans ? typeans.value : null", self._onTypedAnswer)

这只需使用两个参数调用evalWithCallback方法:字符串"typeans ? typeans.value : null"和方法对象{}。您可以从您发布的代码中看到evalWithCallback对此做了什么:

^{pr2}$

因此evalWithCallback接受字符串并将其作为JavaScript运行。从这一点上还不清楚如何调用回调(例如,将使用什么参数调用它),但代码所做的实质是将字符串typeans ? typeans.value : null作为JavaScript执行,然后调用函数self._onTypedAnswer。我的猜测是传递给val的参数是JS表达式求值的结果。在

顺便说一下,从名称“typed answer”判断,我猜val不是问题的正确答案,而是用户的猜测(即用户输入的值)。在

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

如果允许直接操作源代码,则可以将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()

typeans ? typeans.value : null是一个C/C++/C#(可能还有Java,不记得了)代码等价于(伪代码)

if typans:
   return typeans.value
else:
   return null

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

相关问题 更多 >

    热门问题