2011-12-07 20 views
14

私はいくつかの項目をcombBoxに追加する助けが必要です。私は2つのコンボボックスを持っています.1つはcomboboxです。pyqtでコンボボックスにアイテムを追加するにはどうすればいいですか?

私の質問は、新しいアイテムにadditemを使用しても動作しますが、comboboxの別のオプションを選択すると新しいアイテムが追加されますが、前のアイテムは消えてしまい、新しいアイテムの下に空白のアイテムがあります。

私は最初にcomboboxの新しいオプションを選択し、2番目のcomboboxの内容を消去すると思っていましたが、2番目に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

その後、あなたは、単にaddItems方法使用して一度にすべてを追加することができ、list1は、文字列のリストであると仮定すると:あなたはおそらくあなたの例では間違った方法でQApplication.translateを使用している

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

注意を。 list1の文字列を別の言語に翻訳できるようにしたい場合は、を作成してリストを作成し、の文字列リテラルを使用する必要があります。例えば

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

はまた、あなたのコードに非ASCII文字を含む文字列リテラルを使用している場合_fromUtf8機能はだけは本当に便利であることに注意してください - それ以外の場合は、基本的には-OPません。

EDIT

あなたのリストが含まれている場合は、たとえば、ピックスマップとテキストのタプル、そしてあなたは、このようなものを使用することができます

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基本と使用方法に関するデモを見つけるでしょう。

関連する問題