PyQt 4.7, Python 3.1
Есть комбобокс, который нужно программно заполнять и совершать действия при выборе позиции пользователем . Но во время программного заполнения, сигнал currentIndexChanged запускается и при добавлении первой позиции (это не документировано?), и при программной смене позиции на нужную (это документировано). Как в обработчике отличить пользовательское изменение значения от программного заполнения или как правильно заполнять, чтобы не сигналить?
Спасибо!
Вот пример:
from PyQt4 import Qt as qt
import sys
def cbIndexChanged(index):
txt.insertPlainText("Index changed to {} - it must be printed only when user changes values, not programmatic change! How?\n\n".format(index))
def btnFillClicked(checked):
cb.clear()
txt.clear()
cb.addItem("First Item")
cb.addItem("Second Item")
cb.addItem("Third Item")
cb.setCurrentIndex(1)
app = qt.QApplication(sys.argv)
mw = qt.QMainWindow()
fr = qt.QFrame()
cb = qt.QComboBox()
txt = qt.QTextEdit()
btnFill = qt.QPushButton("Fill QComboBox")
cb.currentIndexChanged.connect(cbIndexChanged)
btnFill.clicked.connect(btnFillClicked)
fr.setLayout(qt.QVBoxLayout())
fr.layout().addWidget(cb)
fr.layout().addWidget(txt)
fr.layout().addWidget(btnFill)
mw.setCentralWidget(fr)
mw.show()
res = app.exec_()