gtk3中删除了默认参数?

gue*_*tli 5 pygtk pyside gtk3

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

TypeError: pack_start() takes exactly 5 argument(s) (2 given)
Run Code Online (Sandbox Code Playgroud)

它接缝已删除默认参数.

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

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

删除默认参数对于程序员来说似乎是一个毫无意义的"创造就业计划"......

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

像这样的代码是丑陋的:

box.pack_start(widget, True, True, 0)
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*ess 5

我可以建议两个选项。一种是使用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
Run Code Online (Sandbox Code Playgroud)

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