2011-03-17 14 views
8

मैंने हाल ही में पाइथन और पायसाइड के साथ अपना पहला ऐप लिखने का फैसला किया है। लेकिन मुझे एक समस्या है और उम्मीद है कि आप लोग मदद कर सकते हैं।पायथन पायसाइड (आंतरिक सी ++ ऑब्जेक्ट पहले ही हटाया गया है)

पायथन अपवाद उठाता रहता है कि "आंतरिक सी ++ ऑब्जेक्ट" हटा दिया जाता है। पायथन के साथ मेरे सीमित अनुभव से मुझे लगता है कि मेरी वस्तु गुंजाइश से बाहर जा रही है और पाइथन के कचरा कलेक्टर द्वारा हटा दी जा रही है।

तो मैं पायथन में पाइथन में बहु-पृष्ठ एप्लिकेशन को डिज़ाइन करने के बारे में कैसे जाउंगा। और मेरे QWidgets को रखने में सक्षम होने के नाते मैं पेज को फिर से दिखा सकता हूं।

आपके समय के लिए धन्यवाद।

अद्यतन (कोड)

instancing = None 
def instance(): 
    global instancing 
    if instancing == None: 
     instancing = WPZKernel() 
    return instancing 

class WPZKernel: 
    win = None 
    mainscreen = None 

    def mainwindow(self): 
     if self.win == None: 
      self.win = GMKMainWindow(self) 
     return self.win 

    def main_panel(self): 
     if self.mainscreen == None: 
      self.mainscreen = GMKMainScreen(self.mainwindow()) 
     return self.mainscreen 

मैं तो सामान्य रूप से फोन करके mainpanel का उपयोग होगा:

import kernel 
kernel.instance().main_panel() 

तो मैं गलत तरीके से इस बारे में जा रहा हूँ?

+0

कुछ उदाहरण कोड पेश करने के बारे में, जो अपवाद उठाता है? – gruszczy

उत्तर

6

कुछ खोज और बाल खींच के बाद से स्वामित्व हो जाता है, मैं समाधान मिल गया। मैं उन्हें केंद्रीय विजेट के रूप में सेट करके सभी पृष्ठों दिखाया जा रहा था, और जब QMainWindow documentation पढ़ने मैंने पाया कि मेरी विजेट मूल रूप से क्यूटी द्वारा नष्ट कर दिया जाता है कहा गया है:

नोट: QMainWindow विजेट सूचक और हटाए गए के स्वामित्व लेता है यह उचित समय पर है।

तो मल्टी-पेज एप्लिकेशन विकसित करने के लिए QStackedWidget पर एक नज़र डालें।

5

यहां देखें: PySide Pitfalls

यदि पायथन में कोई QObject गुंजाइश से बाहर हो जाता है, तो यह हटा दिया जाएगा। एक वस्तु की एक विशेषता आप के आसपास रखने के लिए, उदाहरण के रूप में

  • स्टोर यह: आप वस्तु के लिए एक संदर्भ रखने की देखभाल करने के लिए है self.window = QMainWindow()
  • वस्तु के निर्माता के लिए एक माता पिता QObject दर्रा, तो यह माता पिता
+0

क्या ऑब्जेक्ट जिसे मैं इसे एक संपत्ति के रूप में संग्रहीत करता हूं, एक QObject या QWidget होना चाहिए? –

+0

नहीं, कोई भी पायथन ऑब्जेक्ट करेगा, जब तक ऑब्जेक्ट गुंजाइश से बाहर न जाए। –

+0

ठीक है, लेकिन जहां मेरा इंस्टेंस ऑब्जेक्ट गुंजाइश से बाहर हो जाता है? मैं kernel.instance() बूटस्ट्रैप() को बूट करके ऐप शुरू कर रहा हूं और अन्य सभी विजेट कर्नेल.instance() को कॉल करते हैं। मुख्यविंडो() अगर उन्हें मेनविंडो या अन्य विजेट की आवश्यकता होती है। –

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