0

この男のコードを使用して、供給された値を表示するダイヤルを作成しています。

各行を Python シェルにコピーすると、問題なく動作します。だから、もっと機能を追加する時が来たと思いました。しかし、シェルで機能する非常に同じコードは、ファイルから実行すると機能しません。変数「showHr」に対して「変数が見つかりません」というエラーが発生します

コードは次のとおりです。

import os

import gobject
import gtk
import pygtk
import sys
import webkit
pygtk.require('2.0')

URL = "/home/antimony/Oscillator Code/dials2-js.svg"
gobject.threads_init()
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_resizable(True)
window.connect("destroy", lambda window, event: gtk.main_quit())
web_view = webkit.WebView()
web_view.open(URL)

vbox = gtk.VBox(False, 0)
vbox.add(web_view)
window.add(vbox)
window.show_all()
hr1  = 23000/(1*500)
web_view.execute_script("showHr(%d)" % hr1)
gtk.main()

これが本質的に行っていることは、SVG ファイルの関数である showHr に hr1 の値を与えることです。

機能は次のとおりです。

function showHr(newBpm) {
    bpmTarget = newBpm;
}

私は SVG についてまったく手がかりがないので、どこで問題が発生しているのか、それが SVG ファイルのせいなのか、それとも何なのかわかりません。シェルで実行したときに「showHr」を見つけることができるのに、一体なぜ「showHr」を見つけることができないのですか? :S

更新 1 - 別のプログラムで同じ問題が発生しました。今回は PyQt4 を使用します。問題はおそらくコードとは無関係です。Python シェルに何か問題がありますか? もしそうなら、誰かがそれを修正する方法を教えてもらえますか? -- わかりました、これは修正されました。別のファイルを実行するなど、本当にばかげたことをしたのかもしれません。しばらくしてから試してみるとうまくいったからです。何が間違っていたのかわかりません。

しかし、以前の問題は解決せず、助けが必要です!

更新 2 - エラーのあるコード行は次のようです。

web_view.execute_script("showHr(%d)" % hr1)

Javascript で関数を呼び出すには、「showHr(150);」のように記述します。(実際、この呼び出しは SVG ファイル内で呼び出されたときに機能します)。コードを修正した後でも、今は読めるようになりました

web_view.execute_script("showHr(%d);" % hr1)

うまくいきません。それでも同じエラーが発生します。

Message: console message: undefined @0: ReferenceError: Can't find variable: showHr

とにかく、そのSVGファイルを指すには?

4

1 に答える 1

0

理由はわかりませんが、私自身も同様の問題に遭遇しました。少しいじった後、私は見つけました:

web_view.execute_script("'showHr(%d)'" % hr1)
于 2012-08-30T04:40:47.187 に答える