2013-06-11 31 views
5

Próbuję przenieść mój kod pygtk do gtk3. Otrzymuję ten błąd:domyślne argumenty usunięte w gtk3?

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

Szew, że domyślne argumenty zostały usunięte.

Czy gtk3 (dostęp z python) nie obsługuje domyślnych argumentów?

Ponieważ aplikacja nie jest duża, zadaję sobie pytanie, czy powinienem port gtk3 lub pyside ...

Usuwanie argumenty domyślne wygląda na bezsensowną „programowo” tworzenie miejsc pracy dla programistów ...

Nie można znaleźć dobrego przewodnika do przenoszenia (pygtk do python-gtk3). Tylko w ten sposób:

Kod taki jest brzydki:

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

wiem jak szukać + zastąpić .... ale ja nie chcę.

Odpowiedz

4

Są dwie opcje, które mogę zasugerować. Jednym z nich jest użycie pygtkcompat compability module. Prawdopodobnie nie jest to dobre rozwiązanie długoterminowe.

Inną opcją jest łatanie tylko metody pack_start w taki sam sposób jak robi to moduł kompatybilności. Coś takiego:

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 

Zakłada się, że chcesz tylko załatać jedną lub dwie metody. Co więcej i prawdopodobnie lepiej jest trzymać się modułu zgodności.