首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyGTK connect_signals

PyGTK connect_signals
EN

Stack Overflow用户
提问于 2010-08-01 01:42:48
回答 1查看 1.9K关注 0票数 1

好的,我有一个小测试程序:

这是我通过gtk.Builder加载的文件

代码语言:javascript
复制
<object class="GtkWindow" id="mainWindow">
    <property name="default_width">500</property>
    <property name="default_height">250</property>
    <signal name="delete_event" handler="endProgram" />
</object>

然后我用这个:

代码语言:javascript
复制
def endProgram ():
    print "end";

rofl = gtk.Builder();

rofl.add_from_file("mainwindow.ui");
win = rofl.get_object("mainWindow");
rofl.connect_signals("mainWindow");
win.show_all();
gtk.main();

然而,当我去运行时,它会抱怨我缺少了一个mainWindow对象的处理程序。我也试过做rofl.connect_signals(win);

EN

回答 1

Stack Overflow用户

发布于 2010-08-01 01:51:01

按照医生们connect_signals使用映射或实例作为参数,以及

使用Python的内省特性查看键(如果对象是映射)或属性(如果对象是实例),并尝试将它们与接口描述中给出的信号处理程序名称匹配。每个匹配的键或属性引用的回调都连接到它们的匹配信号。

例如,当您传递"mainwindow" (这是str的一个实例)时,属性是例如upperlowerisalpha之类的方法名称--与您可能感兴趣的任何事情无关。你为什么还要win的属性来处理信号呢?你认为connect_signals do 有什么影响?

例如,在这个所以问题本教程中,可以找到一个更典型的示例用法,其中提供了以下Python示例:

代码语言:javascript
复制
class TutorialTextEditor:

    def on_window_destroy(self, widget, data=None):
        gtk.main_quit()

    def __init__(self):

        builder = gtk.Builder()
        builder.add_from_file("tutorial.xml") 

        self.window = builder.get_object("window")
        builder.connect_signals(self)     

正如您所看到的,在这里,connect_signals是以典型的方式使用的--即用on_window_destroy方法传递对象(self),该方法(通过内省)将用作窗口破坏时产生的信号的处理程序。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3380426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档