我尝试将我的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)
我知道如何搜索+替换....但我不想。
答案 0 :(得分:4)
我可以提出两种选择。一个是你使用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
这假设您只想修补一个或两个方法。更重要的是,坚持使用兼容性模块可能会更好。