我尝试将我的pygtk代码移植到gtk3。我收到此错误:

TypeError: pack_start() takes exactly 5 argument(s) (2 given)

它表明默认参数已被删除。

gtk3(从python访问)是否不支持默认参数?

由于应用程序不大,我问自己是否应该移植到gtk3或pyside ...

对于程序员来说,删除默认参数似乎毫无意义。

我找不到很好的移植指南(将pygtk转换为python-gtk3)。只有这个:
  • http://wiki.sugarlabs.org/go/Features/GTK3/Porting#HBox.2C_VBox.2C_pack_start_and_pack_end

  • 像这样的代码很难看:
    box.pack_start(widget, True, True, 0)
    

    我知道如何搜索+替换..但是我不想。

    最佳答案

    我可以建议两个选项。一种是您使用pygtkcompat compability module。但是,这可能不是一个好的长期解决方案。

    另一种选择是以与兼容性模块相同的方式仅修补pack_start方法。像这样的东西:

    orig_pack_start = Gtk.Box.pack_start
    def pack_start(self, child, expand=True, fill=True, padding=0):
        orig_pack_start(self, child, expand, fill, padding)
    Gtk.Box.pack_start = pack_start
    

    假设您只想修补一种或两种方法。不仅如此,最好还是坚持兼容模块。

    关于pygtk - 在gtk3中删除了默认参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17041142/

    10-11 23:28