0

我正在使用这个人的代码来创建一个表盘,显示一个馈给它的值。

当我将每一行复制到 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文件?

4

1 回答 1

0

我不能告诉你为什么,但我自己也遇到了类似的问题。稍作修改后,我发现:

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