我正在使用this guy's code创建一个显示馈送给它的值的拨号盘。代码在shell中运行,但在从文件运行时给出'无法找到变量'错误
当我将每行复制到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
UPDATE 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文件?
我不确定这个问题,但你使用哪个Python shell? – ptomato 2012-07-17 20:04:20
Python 2.7.2+(不知道是什么意思,这就是它的写法) – Antimony 2012-07-18 09:46:29
尝试在代码末尾添加'gtk.main()',因为没有主循环窗口不会显示。至于为什么它能在python控制台上工作,我只能冒险猜测,因为我对pygtk/python的体验相当有限。也许你展示窗口的代码正在被解释并立即执行,而没有事件循环并因此被显示。对于PyQt4,很难说 – 2012-07-19 17:08:42