我正在使用这个人的代码来创建一个表盘,显示一个馈给它的值。
当我将每一行复制到 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文件?