python - pygtk 空地问题 : why isn't this simple script working?

标签 python gtk pygtk glade

我一直在编写一个小型 pygtk 应用程序,使用 glade 将 UI 组合在一起。我已经创建了几个可以正常工作的窗口,但出于某种原因,这个窗口不起作用。我得到以下回溯:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    class TestClass:
  File "test.py", line 10, in TestClass
    self.wTree.signal_autoconnect(self)
NameError: name 'self' is not defined

这里是test.py的内容:

#!/usr/bin/env python

import pygtk
import gtk
import gtk.glade

class TestClass:
    def __init__(self):
        self.wTree = gtk.glade.XML("test.glade")
        self.wTree.signal_autoconnect(self)

    def on_TestClass_destroy(self, widget, data):
        gtk.main_quit()

if __name__ == "__main__":
    window = TestClass()
    gtk.main()

这里是空地文件,test.glade:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.5 on Fri Nov 21 08:53:53 2008 -->
<glade-interface>
  <widget class="GtkWindow" id="TestWindow">
    <property name="visible">True</property>
    <property name="title" translatable="yes">Test Window</property>
    <signal name="destroy" handler="on_TestClass_destroy"/>
    <child>
      <placeholder/>
    </child>
  </widget>
</glade-interface>

奇怪的是,如果我取出 signal_autoconnect(self) 调用,窗口会打开。但是,如果我用“self.on_TestClass_destroy(self, None, None)”替换该调用,它会返回相同的 NameError 异常。

我真的不明白为什么这行不通,因为我已经创建了其他几个工作正常的窗口类。

下面的代码对这里的任何人都有效吗?

最佳答案

该代码、窗口和信号连接在这里工作正常。

调用信号处理程序时有一个小错误。信号处理程序不应该有数据参数,因为只有小部件作为参数传递。

def on_TestClass_destroy(self, widget):
    gtk.main_quit()

数据参数仅在连接上提供,以防您需要信号处理程序的额外状态。

关于python - pygtk 空地问题 : why isn't this simple script working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/308913/

相关文章:

python - os.system ("ping")调用非常慢

python - 安装nolearn(python机器学习)导致错误

python - 如何修复计数功能

python - 如何使用 pygtk 在窗口中包含图像?

javascript - 使用 gjs,如何发出异步 http 请求来分块下载文件?

python - 如何在 python 中使用 wnck 将 gtk 窗口从一个工作区移动到另一个工作区?

python - 为什么在 Flask 中调用第一个请求后阻止任何设置方法?

python - 无法在 macOS 上安装 PyGObject

python - 如何使用 PyGTK 和 PyCairo 在窗口中获得透明背景?

python - GtkTreeView 的行激活和光标改变信号