我正在按照本教程操作,但到了程序出现行问题的地方if response == gtk.RESPONSE_OK
。单击“打开”,然后选择目录并单击“确定”后,会出现此问题。错误消息是“NameError:未定义全局名称‘gtk’”因此,我对其进行了研究,发现我们显然需要导入一些东西:
import pygtk
pygtk.require("2.0")
import gtk
如果我将其添加到 SimpleMediaPlayerWindow.py,那么程序根本无法运行,并出现错误消息:
/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type `PyGtkGenericCellRenderer' is smaller than the parent type's `GtkCellRenderer' class size
from gtk import _gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion `node != NULL' failed
from gtk import _gtk
我以为在安装过程中所有这些内容都已安装并正确配置。有什么建议吗?
顺便提一下,本教程中有一些拼写错误,可能会让读者难以理解。当从窗口中删除预先存在的容器时,它会显示两次“浏览子项列表并删除标签 1”,但第二次它实际上指的是标签 2。“在容器选项卡下查找水平窗格...”实际上应该显示“在容器选项卡下查找窗格...”(也许这在 glade 的更新版本中有所改变)。最后(到目前为止),“然后添加到您的 on_on_openbutton_clicked 函数”,该函数名称中的 on 太多了。
答案1
我遇到了同样的问题,发现正确的语法不是
if response == gtk.RESPONSE_OK
。应该是if response == Gtk.ResponseType.OK
。这解决了我的问题,希望它也能解决你的问题。参考:https://bugs.launchpad.net/ubuntu/+source/quickly/+bug/929572
答案2
您不应该同时导入 gtk 和 pygtk,因为它们会相互冲突。