Python PyQt4:如何将combox名称传递给变量以简化脚本

时间:2018-07-30 17:23:14

标签: python pyqt4

我的标签窗口小部件脚本中有一个名为Cuentas的类。它将打开一个新的MainWindow,其中包含几个可编辑的组合框。几乎所有选项卡都一样。我需要知道所选的组合框名称和当前文本。

这就是我所拥有的:

def eventFilter(self, obj, event):
    if event.type() == QtCore.QEvent.FocusIn:
        if obj == self.CB_Grupo:
            text = str(self.CB_Grupo.currentText())
        if obj == self.CB_Nombre:
            text = str(self.CB_Nombre.currentText())
        if obj == self.CB_Banco:
            text = str(self.CB_Banco.currentText())
        print text
        cb_name = obj.objectName()
        cb_name = str(cb_name)
        print cb_name

有效。 为了简化起见,我尝试为组合框名称使用变量

        cb_text = str(self.cb_name.currentText())          
    return super(Cuentas, self).eventFilter(obj, event)

我收到此错误:AttributeError:'Cuentas'对象没有属性'cb_name'

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

如果您检查代码 self。。cb_name表示cb_name是类的属性,但不是,它是表示某些元素的objectName的字符串。如果要减少代码,则必须执行以下操作:

def eventFilter(self, obj, event):
    if event.type() == QtCore.QEvent.FocusIn and obj in (self.CB_Grupo, self.CB_Nombre, self.CB_Banco):
        cb_text = str(obj.currentText())
        print(cb_text)
    return super(Cuentas, self).eventFilter(obj, event)