代码在shell中运行,但提供'可以't查找变量'从文件运行时出错

Code runs in shell but gives 'Can't find variable' error when run from a file

本文关键字:变量 查找 文件 出错 运行时 可以 运行 shell 代码      更新时间:2023-10-21

我用这家伙的代码创建了一个显示输入值的表盘。

当我将每一行复制到Python外壳时,它运行得很漂亮。所以我认为是时候给它添加更多的功能了。但是在shell中运行的完全相同的代码在从文件运行时不起作用。它为变量"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,showHr是SVG文件中的一个函数。

功能是:

function showHr(newBpm) {
    bpmTarget = newBpm;
}

我对SVG一无所知,所以我不知道哪里出了问题,也不知道是SVG文件的错还是什么。为什么它在外壳中运行时却能找到"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文件?

我无法告诉你原因,但我自己也遇到了类似的问题。经过一番修补,我发现:

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