PyQt: ConverterDialog object has no attribute comboBoxIndexChanged

2024-09-30 10:43:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将comboBox连接到类ConverterDialog中的插槽。我不知道为什么(slots连接在两个类中非常相似),但它不起作用。我认为这是一个简单的问题,但我是python新手,我就是看不到它。以下是错误消息:

Traceback (most recent call last):
  File "test.py", line 130, in genImp
    self.converterDialog = ConverterDialog(self)
  File "test.py", line 182, in __init__
    QtCore.QObject.connect(self.ui.comboBox, QtCore.SIGNAL("currentIndexChanged()"), self.comboBoxIndexChanged())
AttributeError: 'ConverterDialog' object has no attribute 'comboBoxIndexChanged'      

代码:

^{pr2}$

我希望你能帮我,我会很感激你的任何建议。谢谢!在


Tags: inpytestself消息错误linefile
2条回答

connect语句应如下所示:

QtCore.QObject.connect(self.ui.comboBox, QtCore.SIGNAL("currentIndexChanged()"), self, QtCore.SLOT("comboBoxIndexChanged()))

或者

^{pr2}$

更简单的形式是:

self.ui.currentIndexChanged.connect(comboBoxIndexChanged)

您发布的示例代码至少有三处错误:

  1. 您试图传递可调用对象的返回值,而不是可调用对象本身。所以去掉最后一个参数中的括号:

    QtCore.QObject.connect(self.ui.comboBox,
                           QtCore.SIGNAL("currentIndexChanged()"),
                           self.comboBoxIndexChanged)
    
  2. 您试图在定义可调用项之前引用它。这可能是由于缩进错误造成的,因此受影响的部分应该如下所示:

    class ConverterDialog(QtGui.QDialog):
        def __init__(self, parent = None):
            ...
            QtCore.QObject.connect(self.ui.comboBox,
                                   QtCore.SIGNAL("currentIndexChanged()"),
                                   self.comboBoxIndexChanged)
    
        def comboBoxIndexChanged(self):
            return 1
    
  3. 您使用的是丑陋且容易出错的old-style signal and slot syntax,而您可以使用优雅的pythonnew-style syntax。请帮你自己一个忙,把你所有的信号连接都写成这样:

    self.ui.comboBox.currentIndexChanged.connect(self.comboBoxIndexChanged)
    

相关问题 更多 >

    热门问题