2013-06-11 25 views
5

मैं अपने pygtk कोड को gtk3 पर पोर्ट करने का प्रयास करता हूं। मुझे यह त्रुटि मिलती है:डिफ़ॉल्ट तर्क हटा दिए गए?

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

यह बताता है कि डिफ़ॉल्ट तर्क हटा दिए गए हैं।

क्या gtk3 (पायथन से एक्सेस किया गया) डिफ़ॉल्ट तर्कों का समर्थन नहीं करता है?

चूंकि ऐप्लिकेशन बड़ा नहीं है, मैं अपने आप को पूछते हैं कि मैं gtk3 या pyside को बंदरगाह चाहिए ...

डिफ़ॉल्ट तर्क निकाल रहा है प्रोग्रामर के लिए एक व्यर्थ "रोजगार सृजन programm" की तरह दिखता है ...

मुझे एक अच्छा पोर्टिंग गाइड नहीं मिला (pygtk python-gtk3)। केवल इस:

कोड इस तरह बदसूरत है:

box.pack_start(widget, True, True, 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 

यह मानता है कि आप केवल एक या दो तरीकों को पैच करना चाहते हैं। इससे अधिक और संगतता मॉड्यूल के साथ रहना शायद बेहतर है।

संबंधित मुद्दे