Python pygtk glade问题:为什么不是';这个简单的脚本行得通吗?

Python pygtk glade问题:为什么不是';这个简单的脚本行得通吗?,python,gtk,pygtk,glade,Python,Gtk,Pygtk,Glade,我一直在使用glade编写一个小型pygtk应用程序来组装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(se

我一直在使用glade编写一个小型pygtk应用程序来组装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
这是glade文件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>

真的
测试窗口
奇怪的是,如果我取消自动连接(self)呼叫,窗口就会打开。但是如果我用“self.on\u TestClass\u destroy(self,None,None)”替换该调用,它将返回相同的NameError异常

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


下面的代码是否适用于这里的任何人?

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

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

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

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

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

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

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

data参数仅为connect上提供的参数,以防您需要信号处理程序的额外状态。

我似乎已使此代码正常工作,但我不太明白我是如何修复它的。这似乎是一个与空白有关的问题。我不得不改变编辑器处理选项卡/空格的方式,所以这可能是问题的一部分。Python风格指南建议总是使用四个空格而不是一个标签来进行缩进,因此您应该这样设置,以便与其他人友好相处。我似乎已经让这段代码正常工作了,但我并不完全理解我是如何修复它的。这似乎是一个与空白有关的问题。我不得不改变编辑器处理选项卡/空格的方式,所以这可能是问题的一部分。Python风格的指南建议总是使用四个空格而不是一个标签来进行缩进,因此您应该将其设置为与其他人友好相处的方式?在测试回调参数时,它可能有一些魔力。修复它是否修复了对自动连接的调用?它可能有一些魔术在那里测试回调参数。