この男のコードを使用して、供給された値を表示するダイヤルを作成しています。
各行を 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ファイルを指すには?