我需要一些帮助,将一些项目添加到combBox
。因此,我有两个组合框,一个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
更改时执行的函数的一部分。
答案 0 :(得分:35)
假设list1
是一个字符串列表,那么您只需使用addItems方法一次性添加所有字符串:
self.comboBox_2.clear()
self.comboBox_2.addItems(list1)
请注意,您可能在示例中以错误的方式使用QApplication.translate
。如果您希望将list1
中的字符串翻译成其他语言,则应在创建列表时执行此操作,并使用字符串文字< / em>的
例如:
list1 = [
self.tr('First Item'),
self.tr('Second Item'),
self.tr('Third Item'),
]
另请注意,如果您在代码中使用包含非ascii字符的字符串文字,_fromUtf8
函数才真正有用 - 否则,它基本上是无操作。
修改强>
如果您的列表包含像素图和文本的元组,那么您可以使用以下内容:
self.comboBox_2.clear()
for pixmap, text in list1:
self.comboBox_2.addItem(QIcon(pixmap), text)
答案 1 :(得分:4)
这里有一些简单易读的演示/示例 https://github.com/shuge/Enjoy-Qt-Python-Binding,
克隆它,您将找到有关如何使用基本QComboBox
并自定义其图标项的演示。
答案 2 :(得分:0)
这是代码:
names = self.classes_names()
self.comboBox.addItems(names)
def classes_names(self):
coconames = CURRENT_DIR + os.sep + 'yolo-coco' + os.sep + 'coco.names'
with open(coconames) as reader:
return reader.readlines()
我希望它将来能对某人有所帮助。