我正在使用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文件?
答案 0 :(得分:0)
我不能告诉你为什么,但我自己遇到了类似的问题。经过修修补补后,我发现:
web_view.execute_script("'showHr(%d)'" % hr1)