繁体   English   中英

pygtk glade问题:为什么这个简单的脚本不工作?

[英]pygtk glade question: why isn't this simple script working?

我一直在编写一个使用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

这是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()

这是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>

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

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

以下代码是否适用于此处的任何人?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM