0

私は PyQt デザイナーを使用してから、pyuic4 を使用して変換しています。
私のuiファイルには、次のようなコンボボックスがあります。

    self.comboBox = QtGui.QComboBox(self.groupBox_3)
    self.comboBox.setGeometry(QtCore.QRect(20, 30, 81, 22))
    self.comboBox.setObjectName(_fromUtf8("comboBox"))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))
    self.comboBox.addItem(_fromUtf8(""))

ご覧のとおり、コンボ ボックスに入力したテキストはコードのこの部分には表示されませんが、GUI には表示されます。

通常、ラジオボタンなどのユーザー選択がある場合は、次のチェックを実行できます。

if self.RAnkle.isChecked():

入力テキストで同様のことができます。self.comboBox.getText() と言って、ユーザーが選択した文字列を返すように、このロジックをコンボボックスで実行しようとしています。このhttp://pyqt.sourceforge.net/Docs/PyQt4/qcombobox.htmlでいくつかの項目を試してみましたが、うまくいき ません。

たとえば、次のコード:

self.comboBox.activated()  

次のエラー メッセージを返します。

TypeError: native Qt signal is not callable

itemData() も使用しようとしましたが、まだエラーが発生します。

TypeError: QComboBox.itemData(int, int role=Qt.UserRole): not enough arguments

私はコールバック内でこれを行っているので、最初にこれを行います:

self.analyzeButton.clicked.connect(self._AnalyzeData)

次に、関数 _AnalyzeData 内で、現在のコンボボックス項目のテキストを取得しようとしています。

それで、これは可能ですか?

ありがとう

4

2 に答える 2

2

さて、あなたのエラーについては、一目瞭然ではありませんか? :-)

リンクしたばかりのドキュメントから:

ボイド活性化 (int)

これは、このシグナルのデフォルトのオーバーロードです。このシグナルは、ユーザーがコンボボックス内のアイテムを選択したときに送信されます。アイテムのインデックスが渡されます。このシグナルは、選択が変更されていない場合でも送信されることに注意してください。選択が実際にいつ変更されるかを知る必要がある場合は、シグナル currentIndexChanged() を使用します。

Qt シグナルとして直接呼び出すことはできません。発行することができ、発生時に呼び出されるスロットを作成できます。

QVariant QComboBox.itemData (自己、int インデックス、int ロール = Qt.UserRole)

コンボボックスの特定のインデックスにある特定のロールのデータを返します。このロールにデータがない場合は QVariant.Invalid を返します。

setItemData() も参照してください。

role パラメーターにはデフォルト値があるので省略できますが、インデックスを指定する必要があります。

とにかく解決策を見つけてよかったです!

于 2013-04-18T15:25:29.343 に答える