Oleh Prypinに感謝します!PySideのドキュメントであいまいなarg__1に出くわしたとき、あなたの答えは私を助けてくれました。
combo.currentIndexChanged[str]とcombo.currentIndexChanged[unicode]の両方をテストしたところ、各シグナルは現在のインデックステキストのユニコードバージョンを送信しました。
動作を示す例を次に示します。
from PySide import QtCore
from PySide import QtGui
class myDialog(QtGui.QWidget):
def __init__(self, *args, **kwargs):
super(myDialog, self).__init__(*args, **kwargs)
combo = QtGui.QComboBox()
combo.addItem('Dog', 'Dog')
combo.addItem('Cat', 'Cat')
layout = QtGui.QVBoxLayout()
layout.addWidget(combo)
self.setLayout(layout)
combo.currentIndexChanged[int].connect(self.intChanged)
combo.currentIndexChanged[str].connect(self.strChanged)
combo.currentIndexChanged[unicode].connect(self.unicodeChanged)
combo.setCurrentIndex(1)
def intChanged(self, index):
print "Combo Index: "
print index
print type(index)
def strChanged(self, value):
print "Combo String:"
print type(value)
print value
def unicodeChanged(self, value):
print "Combo Unicode String:"
print type(value)
print value
if __name__ == "__main__":
app = QtGui.QApplication([])
dialog = myDialog()
dialog.show()
app.exec_()
結果の出力は次のとおりです。
Combo Index
1
<type 'int'>
Combo String
<type 'unicode'>
Cat
Combo Unicode String
<type 'unicode'>
Cat
また、basestringがエラーをスローすることも確認しましたIndexError: Signature currentIndexChanged(PyObject) not found for signal: currentIndexChanged
。PySideはint
、float
(と呼ばれるdouble
)、str
/ unicode
(両方ともになるunicode
)、およびを区別しているように見えますbool
が、他のすべてのPythonタイプはPyObject
、シグナル署名の目的で解析されます。
それが誰かを助けることを願っています!