4

Python で書かれた Anki というフラッシュ カード プログラムを使用しています。最初のアドオンを書きたいと思います。私は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」(「メインウィンドウ」の意)

クラス "reviewer" の init ステートメントは次のとおりです。

def __init__(self, mw):
    self.mw = mw
    self.web = mw.web
4

4 に答える 4

1

typeans ? typeans.value : nullC/C++/C#おそらくJavaも、覚えていない)(疑似コード)と同等のコードです

if typans:
   return typeans.value
else:
   return null

("typeans ? typeans.value : null", self._onTypedAnswer)このコード行を文字列として含むタプルです。

于 2016-09-15T07:39:04.447 に答える
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()
于 2016-09-15T08:58:17.740 に答える
0

ところで、 typeans の正確な(そして有効な)pythonの同等物は?typeans.value : nullは:

typeans and typeans.value or None
于 2016-09-15T09:02:59.967 に答える