2011-12-07 14 views
14

मुझे combBox पर कुछ आइटम जोड़ने में कुछ मदद चाहिए। इसलिए, मेरे पास दो comboboxes हैं, एक combobox चयनित आइटम के आधार पर दूसरे को पॉप्युलेट करता है।pyqt में मैं एक combobox में आइटम कैसे जोड़ूं?

मेरा प्रश्न है कि, नए आइटम के लिए additem का उपयोग कर, यह काम करता है है, लेकिन अगर मैं combobox के लिए एक और विकल्प चुनें, यह नए आइटम कहते हैं, लेकिन पिछले आइटम चले गए हैं, और वहाँ नए लोगों को नीचे खाली आइटम हैं।

मैं हर बार सोचा मैं दूसरे combobox की सामग्री को स्पष्ट करने के लिए पहले combobox से एक नया विकल्प चुनते हैं,, मैं दूसरे पर clear() इस्तेमाल किया है, लेकिन यह काम नहीं किया।

कि कैसे मैं इसके बारे में सोचा:

self.comboBox_2.clear() 
for index,i in enumerate(list1): 
    self.comboBox_2.addItem(_fromUtf8("")) 
    self.comboBox_2.setItemText(index+2, QtGui.QApplication.translate("Dialog", i, None, QtGui.QApplication.UnicodeUTF8)) 

ऊपर एक समारोह है कि निष्पादित करता है जब पहली combobox परिवर्तन का हिस्सा है।

उत्तर

25

मान लिया जाये कि list1 स्ट्रिंग की एक सूची है, तो आप बस उन्हें एक बार addItems विधि का उपयोग कर में जोड़ सकते हैं:

self.comboBox_2.clear() 
self.comboBox_2.addItems(list1) 

ध्यान दें कि आप शायद अपने उदाहरण में गलत तरीके से QApplication.translate उपयोग कर रहे हैं। यदि आप किसी भिन्न भाषा में अनुवाद करने के लिए list1 में तारों के लिए इसे संभव बनाना चाहते हैं, तो आपको यह करना चाहिए कि जब आप सूची बनाते हैं, और स्ट्रिंग अक्षर का उपयोग करें।

उदाहरण के लिए:

list1 = [ 
    self.tr('First Item'), 
    self.tr('Second Item'), 
    self.tr('Third Item'), 
    ] 

यह भी ध्यान रखें _fromUtf8 समारोह केवल वास्तव में उपयोगी है कि आप स्ट्रिंग अपने कोड में गैर- ASCII वर्ण युक्त शाब्दिक उपयोग कर रहे हैं - अन्यथा, यह मूल रूप से नो-सेशन है।

संपादित

अपने सूची है, तो कहते हैं, पिक्समैप और पाठ की tuples है, तो आप कुछ इस तरह का उपयोग कर सकते हैं:

self.comboBox_2.clear() 
for pixmap, text in list1: 
    self.comboBox_2.addItem(QIcon(pixmap), text) 
+0

धन्यवाद, यह काम किया। मेरे लूप के लिए काम करेगा, भले ही कोई और तरीका है? मैं सूची में प्रत्येक स्ट्रिंग के लिए कुछ आइकन डालने का इरादा रखता हूं, इसलिए मैंने लूप के बारे में सोचा। – GiannisIordanou

4

कुछ सरल और डेमो/उदाहरण पढ़ने में आसान हों यहां https://github.com/shuge/Enjoy-Qt-Python-Binding,

इसे क्लोन करें और आपको मूल QComboBox का उपयोग करने और इसके आइकन आइटम को कस्टम करने के तरीके के बारे में एक डेमो मिलेगा।