2012-11-16 12 views
5

मैंने हाल ही में पायथन का अध्ययन करना शुरू किया और अब मैं पीईक्यूटी पुस्तकालयों का उपयोग करके एक जीयूआई के साथ एक सॉफ्टवेयर बना रहा हूं।गतिशील QGridLayout को अपडेट करना - पायथन PyQt

यहां मेरी समस्या है: मैं स्क्रोलरेरा बनाता हूं, मैंने इस स्क्रॉलरेरा में एक विजेट रखा है जिसमें एक QGridLayout है।

sa = QtGui.QScrollArea() 
    sa_widget = QtGui.QWidget() 
    self.sa_grid.setSizeConstraint(QtGui.QLayout.SetMinAndMaxSize) 
    sa_widget.setLayout(self.sa_grid) 
    sa.setWidgetResizable(True) 
    sa.setWidget(sa_widget) 

तब मैं जोड़ने 10 QLabel (यह, बस पाठ्यक्रम का एक उदाहरण है इस उदाहरण में मैं एक QGridLayout उपयोग कर रहा हूँ बस एक कार्यक्षेत्र लेआउट की तरह):

i = 0 
    while i<100: 
     i = i +1 
     add = QtGui.QLabel("Row %i" % i) 
     self.sa_grid.addWidget(add) 

तो मैं एक बटन बनाने कि कॉल समारोह "function_name", मैं चाहता हूँ इस समारोह में एक पंक्ति को हटा देता है कि, अब तक इस मैं क्या लिखा है यह है:

tmp = QtGui.QWidget() 
    tmp = self.sa_grid.itemAt(0) 
    self.sa_grid.removeItem(tmp) 

यह पहली पंक्ति और gridlayout के हर एक्स पंक्ति को हटा देता हो जाता है पंक्ति एक्स 1 हालांकि, यह करता है टेक्स्ट "पंक्ति 1" को हटाएं, इसलिए मुझे एक ही पंक्ति पर "पंक्ति 0" और "पंक्ति 1" दिखाई देता है।

कोई भी मेरी मदद कर सकता है?

धन्यवाद डेविड

उत्तर

2

अग्रिम में एक बहुत, एक लेआउट में से एक आइटम निकाल रहा है वह हटता नहीं है। आइटम सिर्फ एक मुक्त लेआउट ऑब्जेक्ट बन जाएगा जिसमें कोई संबंधित लेआउट नहीं होगा।

आप पूरी तरह से वस्तु से छुटकारा पाने चाहते हैं, स्पष्ट रूप से इसे हटाने के लिए:

def deleteGridWidget(self, index): 
    item = self.sa_grid.itemAt(index) 
    if item is not None: 
     widget = item.widget() 
     if widget is not None: 
      self.sa_grid.removeWidget(widget) 
      widget.deleteLater() 
+0

निर्माण पूरी तरह से, बहुत बहुत शुक्रिया! मैंने जवाब देने के लिए इतना समय बर्बाद कर दिया और अब मुझे मिल गया। क्या आप मुझे कुछ महान पायथन/पीईक्यूटी ट्यूटोरियल सुझा सकते हैं, कृपया? आपकी सहायता के लिए धन्यवाद! – xuT

+0

@ TheTux94। [पीईक्यूटी विकी] (http://www.diotavelli.net/PyQtWiki/StartPage?action=show&redirect=FrontPage) शुरू करने के लिए एक खराब जगह नहीं है। सभी सामग्री अद्यतित नहीं है (इसमें से कुछ PyQt4 के बजाय PyQt3 से संबंधित है), लेकिन यदि आप चारों ओर खुदाई करते हैं तो आपको बहुत सारी उपयोगी चीज़ें मिलनी चाहिए। – ekhumoro