代码在shell中运行,但从文件运行时会出现“无法找到变量”错误

时间:2012-07-17 18:33:42

标签: javascript python webkit svg gtk

我正在使用this guy's code来创建一个显示输入值的表盘。

当我将每一行复制到Python shell时,它运行得很漂亮。所以我认为是时候为它添加更多功能了。但是从shell运行的VERY SAME代码在从文件运行时不起作用。它为变量'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()

它本质上正在做的是将hr1的值提供给showHr,这是SVG文件中的一个函数。

功能是:

function showHr(newBpm) {
    bpmTarget = newBpm;
}

我对SVG一无所知,所以我不知道哪里出了什么问题,以及它是SVG文件的错误还是什么。为什么它在找到那个在shell中运行的时候找不到'showHr'呢? :S

更新1 - 我和另一个程序有同样的问题。这次使用PyQt4。那么问题可能与代码无关。我的Python shell有问题吗?如果是这样,谁能告诉我如何解决它? - 好的,这个问题得到解决。我可能做了一些非常愚蠢的事情,比如运行一个不同的文件或其他东西,因为我在一段时间后尝试它时会工作。我不知道我做错了什么。

然而,早期的问题仍然存在,我需要帮助!

更新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文件?

1 个答案:

答案 0 :(得分:0)

我不能告诉你为什么,但我自己遇到了类似的问题。经过修修补补后,我发现:

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