6

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

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

似乎默认参数已被删除。

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

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

对于程序员来说,删除默认参数看起来像是一个毫无意义的“工作创建程序”......

我找不到一个好的移植指南(pygtk 到 python-gtk3)。只有这个:

像这样的代码很难看:

box.pack_start(widget, True, True, 0)

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

4

1 回答 1

7

我可以建议两个选项。一种是您使用pygtkcompat 兼容性模块。不过,这可能不是一个好的长期解决方案。

另一个选项是以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

这假设您只想修补一种或两种方法。不仅如此,坚持使用兼容性模块可能会更好。

于 2013-06-27T23:21:57.693 回答