2013-06-11 7 views
5

Ich versuche, meinen pygtk-Code nach gtk3 zu portieren. Ich bekomme diesen Fehler:Standardargumente in gtk3 entfernt?

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

Es scheint, dass die Standardargumente entfernt wurden.

Unterstützt gtk3 (Zugriff von Python) keine Standardargumente?

Da die App nicht groß ist, frage ich mich, ob ich sollte Port gtk3 oder pyside ...

die Argumente Standard Entfernen sieht aus wie eine sinnlose „Schaffung von Arbeitsplätzen Programm“ für Programmierer ...

Ich konnte keinen guten Portierungsleitfaden finden (pygtk zu python-gtk3). Nur so viel:

-Code wie das ist hässlich:

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

Ich weiß, wie + zu ersetzen suchen .... aber ich will nicht.

Antwort

4

Es gibt zwei Möglichkeiten, die ich vorschlagen kann. Eine ist die pygtkcompat compability module. Dies ist jedoch wahrscheinlich keine gute langfristige Lösung.

Die andere Option besteht darin, nur die pack_start Methode auf die gleiche Weise zu patchen wie das Kompatibilitätsmodul. So etwas wie dieses:

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 

Dies setzt voraus, dass Sie nur eine oder zwei Methoden patchen möchten. Mehr als das und es ist wahrscheinlich besser, mit dem Kompatibilitätsmodul zu bleiben.