私は、Grade を使用して UI をまとめる小さな pygtk アプリケーションを作成しています。すでに機能するウィンドウをいくつか作成しましたが、何らかの理由でこのウィンドウが機能しません。次のトレースバックを取得します。
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 例外が返されます。
正常に動作する他のいくつかのウィンドウ クラスを作成したため、これが動作しない理由が本当にわかりません。
次のコードは、ここの誰かのために機能していますか?