Уведомления

Группа в Telegram: @pythonsu

#1 Март 12, 2013 11:31:59

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

Пропадает свойство[PyQT]

Есть такой класс:

class QProxyTypeBox(QtGui.QGroupBox):
    '''
    Бокс для выбора типа прокси.
    Атрибуты:
    proxy_type - Может принимать значение: SOCKS4\SOCKS5\HTTP\NONE
    '''
    def __init__(self, parent=None):
        super(QtGui.QGroupBox, self).__init__(parent)
        self.setTitle(u'Тип прокси')
        self.proxy_type = 'HTTP'
        self.layout = QtGui.QVBoxLayout()
        self.layout.setContentsMargins(5, 5, 0, 0)
        self.layout.setAlignment(Qt.AlignLeft)
        self.layout.setSpacing(0)
        self.button_group = QtGui.QButtonGroup(self)
        self.button_group.buttonClicked.connect(self._button_clicked)
        proxy_types = ('SOCKS5', 'SOCKS4', 'HTTP', 'NONE')
        for t in proxy_types:
            b = QtGui.QRadioButton(t)
            self.button_group.addButton(b)
            self.layout.addWidget(b)
        self.button_group.buttons()[1].setChecked(True)
        self.setMaximumWidth(100)
        self.setLayout(self.layout)
    def _button_clicked(self, button):
        self.proxy_type = str(button.text())
    def setNoneButtonEnabled(self, enabled):
        self.button_group.buttons()[-1].setEnabled(enabled)
    def getNoneButtonEnabled(self):
        return self.button_group.buttons()[-1].enabled()
    
    noneButtonEnabled = pyqtProperty(bool, getNoneButtonEnabled,
                                    setNoneButtonEnabled)

Проверяю так.
    app = QtGui.QApplication([])
    p = QProxyTypeBox()
    p.show()
    p.noneButtonEnabled = True
    print p.noneButtonEnabled
    exit(app.exec_())

Ошибка:
print p.noneButtonEnabled
AttributeError: 'QProxyTypeBox' object has no attribute 'noneButtonEnabled'

Если вызвать dir(p) атрибут будет в списке.

Если закомментировать print все работает.

Разобрался.
Ошибка была тут:
return self.button_group.buttons()[-1].enabled() #Нету свойства enabled, есть isEnabled
Почему-то, вместо ексепшенапросто пропадал аттрибут.



Отредактировано mironich (Март 12, 2013 11:49:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version