【问题标题】:Can't pass user data in callback using Glade无法使用 Glade 在回调中传递用户数据
【发布时间】:2011-05-29 04:25:34
【问题描述】:

我正在使用 pygtk 和 Glade 制作一个应用程序。

我正在尝试制作一个单选按钮系列。在切换按钮后尝试传递用户数据时,我感到很困惑。回调工作正常,但没有发送在 glade 的用户数据字段中处理程序旁边输入的用户数据。

作为一个简单的测试,我在课堂上做了这个:

def on_output_toggled(self, widget, data=None):
    print data

在林间空地中,有一个单选按钮设置为发出“切换”信号,处理程序中的 on_output_toggled 和 m4b 作为用户数据。

选择单选按钮后预期的终端输出是:

m4b

我得到的是:

None

我做错了什么。除了小部件本身之外,没有在回调上传递任何内容。

谢谢, 纳尼

【问题讨论】:

    标签: python pygtk glade


    【解决方案1】:

    您在 Glade 中输入的“用户数据”实际上应该只是该 Glade 文件中定义的其他小部件(或操作或对象)的名称。在您的情况下,您的 Glade 文件中的某处需要有一个名为“m4b”的对象。

    【讨论】:

    • 是的,我发现这是真的,这很糟糕,因为如果你是手动设置而不是使用 Glade,你可以将任何你想要的用户信息传递给你的回调而不是传递一个功能/对象。 Glade 在这方面非常有限,我很困惑为什么会这样设计。我可能会提交错误报告。
    【解决方案2】:

    我也遇到这种问题,我的解决方法是手动连接信号。 我使用 perl-gtk3 ,Python 理论上可以工作。

    ...
    my $button = $builder->get_object("button");
    $button->signal_connect(clicked=>\&on_output_toggled,"m4b");
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多