我尝试将我的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)
我知道如何搜索+替换..但是我不想。
最佳答案
我可以建议两个选项。一种是您使用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/